diff --git a/app/docker/php/Dockerfile b/app/docker/Dockerfile similarity index 69% rename from app/docker/php/Dockerfile rename to app/docker/Dockerfile index 61efbcd..1c771fa 100644 --- a/app/docker/php/Dockerfile +++ b/app/docker/Dockerfile @@ -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"] diff --git a/app/docker/web/Dockerfile b/app/docker/web/Dockerfile deleted file mode 100644 index 8c55a71..0000000 --- a/app/docker/web/Dockerfile +++ /dev/null @@ -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"]