Created
May 28, 2021 13:31
-
-
Save mijndert/81a3779817e57a8903329dde82e2eeed to your computer and use it in GitHub Desktop.
WIP multi-stage build for Laravel
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM php:7.4-fpm-alpine AS be-build | |
WORKDIR /app/ | |
COPY . . | |
RUN apk add libzip-dev \ | |
&& docker-php-ext-install zip \ | |
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer | |
RUN composer install \ | |
--ignore-platform-reqs \ | |
--no-interaction \ | |
--no-plugins \ | |
--no-scripts \ | |
--prefer-dist \ | |
--no-dev \ | |
--optimize-autoloader | |
# ============================================================= | |
FROM node:16-alpine AS fe-build | |
WORKDIR /app | |
COPY --from=be-build /app/ . | |
RUN npm install \ | |
&& npm run production | |
# ============================================================= | |
FROM php:7.4-fpm-alpine AS app | |
RUN apk add libzip-dev \ | |
&& docker-php-ext-install zip \ | |
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer | |
RUN apk add --no-cache php7 \ | |
php7-common \ | |
php7-fpm \ | |
php7-pdo \ | |
php7-opcache \ | |
php7-zip \ | |
php7-phar \ | |
php7-iconv \ | |
php7-cli \ | |
php7-curl \ | |
php7-openssl \ | |
php7-mbstring \ | |
php7-tokenizer \ | |
php7-fileinfo \ | |
php7-json \ | |
php7-xml \ | |
php7-xmlwriter \ | |
php7-simplexml \ | |
php7-dom \ | |
php7-pdo_mysql \ | |
php7-pdo_sqlite \ | |
php7-tokenizer \ | |
php7-pecl-redis | |
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" | |
WORKDIR /app | |
COPY --from=be-build /app/ . | |
COPY --from=fe-build /app/public /app/public | |
RUN chown -R www-data:www-data /app | |
RUN chmod g+x /app \ | |
&& chmod g+x /app/public \ | |
&& chmod g+x /app/public/index.php | |
RUN composer dump-autoload -o | |
EXPOSE 9000 | |
CMD ["php-fpm"] | |
# ============================================================= | |
FROM php:7.4-fpm-alpine AS worker | |
RUN apk add libzip-dev \ | |
&& docker-php-ext-install zip \ | |
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer | |
RUN apk add --no-cache php7 \ | |
php7-common \ | |
php7-fpm \ | |
php7-pdo \ | |
php7-opcache \ | |
php7-zip \ | |
php7-phar \ | |
php7-iconv \ | |
php7-cli \ | |
php7-curl \ | |
php7-openssl \ | |
php7-mbstring \ | |
php7-tokenizer \ | |
php7-fileinfo \ | |
php7-json \ | |
php7-xml \ | |
php7-xmlwriter \ | |
php7-simplexml \ | |
php7-dom \ | |
php7-pdo_mysql \ | |
php7-pdo_sqlite \ | |
php7-tokenizer \ | |
php7-pecl-redis | |
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" | |
#RUN sed -i 's/9000/3000/' /usr/local/etc/php-fpm.d/zz-docker.conf | |
WORKDIR /app | |
COPY --from=be-build /app/ . | |
COPY --from=fe-build /app/public /app/public | |
RUN chown -R www-data:www-data /app | |
RUN composer dump-autoload -o | |
CMD ["php", "artisan", "queue:work"] | |
# ============================================================= | |
FROM nginx:stable AS web | |
WORKDIR /app | |
COPY --from=be-build /app/ . | |
COPY --from=fe-build /app/public /app/public | |
COPY docker/vhost.conf /etc/nginx/conf.d/default.conf | |
EXPOSE 80 | |
CMD ["nginx", "-g", "daemon off;"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment