web/docker/release/Dockerfile

91 lines
2.5 KiB
Docker

FROM phpswoole/php8.1-alpine
WORKDIR /var/www/html
# Basic
RUN apk update && pecl update-channels
RUN apk add bash supervisor tzdata curl supervisor zip unzip
# Timezone
ENV TZ=$APP_TIMEZONE
RUN apk add tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Install essential build tools for NPM assets + PHP extensions
RUN apk add \
autoconf \
g++ \
gcc \
git \
libpng \
make \
nodejs \
yarn
# Install build tools for PHP extensions only
RUN apk add \
bzip2-dev \
curl-dev \
icu-dev \
libfreetype6-dev \
libjpeg-turbo-dev \
libpng-dev \
libwebp-dev \
libxpm-dev \
libzip-dev \
oniguruma-dev \
openssl-dev \
zlib-dev
# Install PHP extensions
RUN pecl install msgpack-stable && docker-php-ext-enable msgpack && \
pecl install redis-stable && docker-php-ext-enable redis && \
&& docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install gd && docker-php-ext-enable gd \
&& docker-php-ext-install -j$(nproc) bz2 && docker-php-ext-enable bz2 \
&& docker-php-ext-install -j$(nproc) curl && docker-php-ext-enable curl \
&& docker-php-ext-install -j$(nproc) intl && docker-php-ext-enable intl \
&& docker-php-ext-install -j$(nproc) mbstring && docker-php-ext-enable mbstring \
&& docker-php-ext-install -j$(nproc) pdo pdo_pgsql && docker-php-ext-enable pdo pg_sql \
&& docker-php-ext-install -j$(nproc) xml && docker-php-ext-enable xml \
&& docker-php-ext-install -j$(nproc) zip && docker-php-ext-enable zip
# Clear out the junk
RUN apk add \
bzip2-dev \
curl-dev \
icu-dev \
libfreetype6-dev \
libjpeg-turbo-dev \
libpng-dev \
libwebp-dev \
libxpm-dev \
libzip-dev \
oniguruma-dev \
openssl-dev \
zlib-dev
RUN rm -rf /var/cache/apk/* && /tmp/*
# Entrypoint
RUN (delgroup www-data || true) \
&& addgroup -g 82 -S www-data \
&& adduser -u 82 -D -S -G www-data www-data
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1
COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/8.1/cli/conf.d/99-tadah.ini
# Add our source directory
ADD . .
# Build NPM assets and install composer
RUN npm run production \
&& composer install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader
# Delete artifacts
RUN rm webpack.mix.js package* composer*
# Run
EXPOSE 80
ENTRYPOINT [ "start-container" ]