This commit ensures a writable .composer directory is created with appropriate permissions. This change resolves potential permission issues when using Composer inside the container.
124 lines
3.9 KiB
Docker
124 lines
3.9 KiB
Docker
FROM docker.io/php:8.3-zts-alpine3.18 AS UNIT_BUILDER
|
|
|
|
ARG UNIT_VERSION=1.31.1
|
|
|
|
RUN apk --no-cache add pcre2-dev gcc git musl-dev make && \
|
|
mkdir -p /usr/lib/unit/modules && \
|
|
git clone https://github.com/nginx/unit.git && \
|
|
cd unit && \
|
|
git checkout $UNIT_VERSION && \
|
|
./configure --prefix=/var --statedir=/var/lib/unit --runstatedir=/var/run --control=unix:/run/unit/control.unit.sock --log=/var/log/unit.log --user=www-data --group=www-data --tmpdir=/tmp --modulesdir=/var/lib/unit/modules && \
|
|
./configure php && \
|
|
make && \
|
|
make install
|
|
|
|
FROM docker.io/php:8.3-zts-alpine3.18 as BUILD
|
|
|
|
COPY --from=UNIT_BUILDER /var/sbin/unitd /usr/sbin/unitd
|
|
COPY --from=UNIT_BUILDER /var/lib/unit/ /var/lib/unit/
|
|
|
|
COPY docker/unit-config.json /docker-entrypoint.d/config.json
|
|
|
|
RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freetype oniguruma libzip \
|
|
&& apk add --no-cache --virtual .phpize-deps icu-dev libpng-dev bzip2-dev libwebp-dev libjpeg-turbo-dev freetype-dev oniguruma-dev libzip-dev pcre2-dev ${PHPIZE_DEPS} \
|
|
&& docker-php-ext-configure intl --enable-intl && \
|
|
docker-php-ext-configure bcmath --enable-bcmath && \
|
|
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp && \
|
|
docker-php-ext-install -j$(nproc) gd && \
|
|
docker-php-ext-install bcmath &&\
|
|
docker-php-ext-install pdo \
|
|
mysqli pdo_mysql \
|
|
intl mbstring \
|
|
zip pcntl \
|
|
exif opcache bz2 \
|
|
calendar \
|
|
&& pear update-channels && pecl update-channels \
|
|
&& pecl install redis && docker-php-ext-enable redis \
|
|
&& rm -rf /tmp/pear \
|
|
&& docker-php-source delete \
|
|
&& apk del .phpize-deps \
|
|
&& rm -rf /var/cache/apk/* && rm -rf /etc/apk/cache \
|
|
&& rm -rf /usr/share/php && rm -rf /tmp/* \
|
|
&& rm "$PHP_INI_DIR/php.ini-development" \
|
|
&& mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
|
|
&& mkdir -p /tmp/php/upload \
|
|
&& mkdir -p /tmp/php/sys \
|
|
&& mkdir -p /tmp/php/session \
|
|
&& chown -R www-data:www-data /tmp/php \
|
|
&& ln -sf /dev/stdout /var/log/unit.log \
|
|
&& addgroup -S unit && adduser -S unit -G unit
|
|
|
|
FROM BUILD as APP_BUILD_FOR_PRODUCTION
|
|
WORKDIR /home/app
|
|
|
|
COPY application /home/app
|
|
|
|
RUN apk --no-cache add git nodejs npm \
|
|
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
|
|
&& composer install --optimize-autoloader --no-dev \
|
|
&& npm install && npm run build \
|
|
&& rm -rf /home/app/node_modules /home/app/.env
|
|
|
|
|
|
FROM BUILD AS PRODUCTION
|
|
|
|
COPY --from=APP_BUILD_FOR_PRODUCTION /home/app /var/www/html
|
|
COPY docker/docker-entrypoint_prod.sh /home/unit/docker-entrypoint.sh
|
|
COPY docker/start.sh /usr/local/bin/start
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
RUN chmod 755 /home/unit/docker-entrypoint.sh \
|
|
&& chmod 755 /usr/local/bin/start
|
|
|
|
STOPSIGNAL SIGTERM
|
|
|
|
ENTRYPOINT ["/home/unit/docker-entrypoint.sh"]
|
|
EXPOSE 9000
|
|
CMD ["/usr/local/bin/start"]
|
|
|
|
|
|
FROM BUILD AS DEVELOP
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
COPY docker/docker-entrypoint_dev.sh /home/unit/docker-entrypoint.sh
|
|
COPY docker/start.sh /usr/local/bin/start
|
|
|
|
STOPSIGNAL SIGTERM
|
|
|
|
RUN chmod 755 /home/unit/docker-entrypoint.sh \
|
|
&& chmod 755 /usr/local/bin/start \
|
|
&& apk --no-cache add git nodejs npm \
|
|
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
|
|
|
ENTRYPOINT ["/home/unit/docker-entrypoint.sh"]
|
|
|
|
EXPOSE 9000
|
|
CMD ["/usr/local/bin/start"]
|
|
|
|
|
|
|
|
FROM BUILD AS ARTISAN
|
|
WORKDIR /var/www/html
|
|
STOPSIGNAL SIGTERM
|
|
ENTRYPOINT ["php", "/var/www/html/artisan"]
|
|
|
|
|
|
FROM BUILD AS COMPOSER
|
|
WORKDIR /var/www/html
|
|
STOPSIGNAL SIGTERM
|
|
RUN apk --no-cache add git \
|
|
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
|
RUN mkdir "/.composer" && chmod -R 0777 "/.composer"
|
|
ENTRYPOINT ["composer"]
|
|
|
|
|
|
|
|
FROM BUILD AS NPM
|
|
RUN mkdir "/.npm" && chmod -R 0777 "/.npm"
|
|
WORKDIR /var/www/html
|
|
STOPSIGNAL SIGTERM
|
|
RUN apk --no-cache add nodejs npm
|
|
ENTRYPOINT ["npm"]
|