Consolidate PHP and Nginx Dockerfiles
- Merge separate PHP and Nginx Dockerfiles into a unified structure under `app/docker/Dockerfile`. - Simplify build stages and streamline multi-service configuration for production, development, and utility containers. - Remove outdated individual Dockerfiles (`php/Dockerfile` and `web/Dockerfile`).
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
FROM docker.io/php:8.5-fpm-alpine3.23 AS build
|
||||
FROM docker.io/php:8.5-fpm-alpine3.23 AS php
|
||||
|
||||
RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freetype oniguruma libzip jq \
|
||||
&& 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} \
|
||||
@@ -29,20 +29,37 @@ RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freety
|
||||
|
||||
COPY docker/php/conf/app-fpm.conf /usr/local/etc/php-fpm.d/app-fpm.conf
|
||||
|
||||
FROM build AS app_build_for_production
|
||||
FROM docker.io/nginx:1.31-alpine AS nginx
|
||||
|
||||
COPY docker/web/conf/default.conf.template /etc/nginx/templates/default.conf.template
|
||||
COPY docker/web/conf/fastcgi_params /etc/nginx/fastcgi_params
|
||||
COPY docker/web/start.sh /usr/local/bin/start
|
||||
|
||||
RUN chmod 755 /usr/local/bin/start
|
||||
|
||||
FROM nginx AS web_build_for_production
|
||||
|
||||
WORKDIR /home/app
|
||||
COPY application /home/app
|
||||
|
||||
RUN apk --no-cache add git nodejs npm \
|
||||
&& npm install && npm run build \
|
||||
&& rm -rf /home/app/node_modules
|
||||
|
||||
FROM php AS app_build_for_production
|
||||
WORKDIR /home/app
|
||||
|
||||
COPY application /home/app
|
||||
|
||||
RUN apk --no-cache add git \
|
||||
RUN apk --no-cache add git \
|
||||
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
|
||||
&& composer install --optimize-autoloader --no-dev \
|
||||
&& rm -rf /home/app/.env
|
||||
&& rm -f /home/app/.env
|
||||
|
||||
|
||||
FROM build AS production
|
||||
FROM php AS app_production
|
||||
|
||||
COPY --from=app_build_for_production /home/app /var/www/html
|
||||
COPY --from=web_build_for_production /home/app/public/build/ /var/www/html/public/build
|
||||
COPY docker/php/start.sh /usr/local/bin/start
|
||||
|
||||
WORKDIR /var/www/html
|
||||
@@ -57,8 +74,18 @@ USER www-data
|
||||
EXPOSE 9000
|
||||
CMD ["/usr/local/bin/start"]
|
||||
|
||||
FROM nginx AS web_production
|
||||
|
||||
FROM build AS develop
|
||||
COPY --from=web_build_for_production /home/app/public /usr/share/nginx/html
|
||||
RUN rm -f /usr/share/nginx/html/50x.html /usr/share/nginx/html/index.php /usr/share/nginx/html/.htaccess
|
||||
|
||||
WORKDIR /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
CMD ["/usr/local/bin/start"]
|
||||
|
||||
# develop
|
||||
FROM php AS app_develop
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
@@ -75,15 +102,12 @@ USER www-data
|
||||
EXPOSE 9000
|
||||
CMD ["/usr/local/bin/start"]
|
||||
|
||||
|
||||
|
||||
FROM build AS artisan
|
||||
FROM php AS artisan
|
||||
WORKDIR /var/www/html
|
||||
STOPSIGNAL SIGTERM
|
||||
ENTRYPOINT ["php", "/var/www/html/artisan"]
|
||||
|
||||
|
||||
FROM build AS composer
|
||||
FROM php AS composer
|
||||
WORKDIR /var/www/html
|
||||
STOPSIGNAL SIGTERM
|
||||
RUN apk --no-cache add git \
|
||||
@@ -91,11 +115,15 @@ RUN apk --no-cache add git \
|
||||
RUN mkdir "/.composer" && chmod -R 0777 "/.composer"
|
||||
ENTRYPOINT ["composer"]
|
||||
|
||||
|
||||
|
||||
FROM build AS npm
|
||||
FROM php AS npm
|
||||
RUN mkdir "/.npm" && chmod -R 0777 "/.npm"
|
||||
WORKDIR /var/www/html
|
||||
STOPSIGNAL SIGTERM
|
||||
RUN apk --no-cache add nodejs npm
|
||||
ENTRYPOINT ["npm"]
|
||||
|
||||
FROM nginx AS web_develop
|
||||
WORKDIR /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
CMD ["/usr/local/bin/start"]
|
||||
@@ -1,31 +0,0 @@
|
||||
FROM docker.io/nginx:1.31-alpine AS build
|
||||
|
||||
COPY docker/web/conf/default.conf.template /etc/nginx/templates/default.conf.template
|
||||
COPY docker/web/conf/fastcgi_params /etc/nginx/fastcgi_params
|
||||
COPY docker/web/start.sh /usr/local/bin/start
|
||||
|
||||
RUN chmod 755 /usr/local/bin/start
|
||||
|
||||
FROM build AS app_build_for_production
|
||||
|
||||
WORKDIR /home/app
|
||||
COPY application /home/app
|
||||
|
||||
RUN apk --no-cache add git nodejs npm \
|
||||
&& npm install && npm run build \
|
||||
&& rm -rf /home/app/node_modules
|
||||
|
||||
FROM build AS production
|
||||
|
||||
COPY --from=app_build_for_production /home/app/public /usr/share/nginx/html
|
||||
|
||||
WORKDIR /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
CMD ["/usr/local/bin/start"]
|
||||
|
||||
FROM build AS develop
|
||||
WORKDIR /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
CMD ["/usr/local/bin/start"]
|
||||
Reference in New Issue
Block a user