Created
March 28, 2021 19:11
-
-
Save eiannone/25de4c6735fd1bdbd703fe62a787ad45 to your computer and use it in GitHub Desktop.
Sylius su AWS
This file contains 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
# the different stages of this Dockerfile are meant to be built into separate images | |
# https://docs.docker.com/compose/compose-file/#target | |
ARG PHP_VERSION=7.3 | |
ARG NODE_VERSION=10 | |
ARG NGINX_VERSION=1.16 | |
FROM php:${PHP_VERSION}-fpm-alpine AS sylius_php | |
# persistent / runtime deps | |
RUN apk add --no-cache \ | |
acl \ | |
file \ | |
gettext \ | |
git \ | |
mariadb-client \ | |
; | |
ARG APCU_VERSION=5.1.17 | |
RUN set -eux; \ | |
apk add --no-cache --virtual .build-deps \ | |
$PHPIZE_DEPS \ | |
coreutils \ | |
freetype-dev \ | |
icu-dev \ | |
libjpeg-turbo-dev \ | |
libpng-dev \ | |
libtool \ | |
libwebp-dev \ | |
libzip-dev \ | |
mariadb-dev \ | |
zlib-dev \ | |
; \ | |
\ | |
docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include --with-webp-dir=/usr/include --with-freetype-dir=/usr/include/; \ | |
docker-php-ext-configure zip --with-libzip; \ | |
docker-php-ext-install -j$(nproc) \ | |
exif \ | |
gd \ | |
intl \ | |
pdo_mysql \ | |
zip \ | |
; \ | |
pecl install \ | |
apcu-${APCU_VERSION} \ | |
; \ | |
pecl clear-cache; \ | |
docker-php-ext-enable \ | |
apcu \ | |
opcache \ | |
; \ | |
\ | |
runDeps="$( \ | |
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ | |
| tr ',' '\n' \ | |
| sort -u \ | |
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ | |
)"; \ | |
apk add --no-cache --virtual .sylius-phpexts-rundeps $runDeps; \ | |
\ | |
apk del .build-deps | |
COPY docker/php/php.ini /usr/local/etc/php/php.ini | |
COPY docker/php/php-cli.ini /usr/local/etc/php/php-cli.ini | |
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer | |
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser | |
ENV COMPOSER_ALLOW_SUPERUSER=1 | |
RUN set -eux; \ | |
composer clear-cache | |
ENV PATH="${PATH}:/root/.composer/vendor/bin" | |
WORKDIR /srv/sylius | |
# build for production | |
ARG APP_ENV=prod | |
# prevent the reinstallation of vendors at every changes in the source code | |
COPY composer.json composer.lock symfony.lock ./ | |
RUN set -eux; \ | |
composer install --prefer-dist --no-autoloader --no-scripts --no-progress; \ | |
composer clear-cache | |
# copy only specifically what we need | |
COPY .env .env.prod .env.test .env.test_cached ./ | |
COPY bin bin/ | |
COPY config config/ | |
COPY public public/ | |
COPY src src/ | |
COPY templates templates/ | |
COPY translations translations/ | |
RUN set -eux; \ | |
mkdir -p var/cache var/log; \ | |
composer dump-autoload --classmap-authoritative; \ | |
APP_SECRET='' composer run-script post-install-cmd; \ | |
chmod +x bin/console; sync; \ | |
bin/console sylius:install:assets; \ | |
bin/console sylius:theme:assets:install public | |
VOLUME /srv/sylius/public | |
COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint | |
RUN chmod +x /usr/local/bin/docker-entrypoint | |
ENTRYPOINT ["docker-entrypoint"] | |
CMD ["php-fpm"] | |
FROM node:${NODE_VERSION}-alpine AS sylius_nodejs | |
WORKDIR /srv/sylius | |
RUN set -eux; \ | |
apk add --no-cache --virtual .build-deps \ | |
g++ \ | |
gcc \ | |
git \ | |
make \ | |
python \ | |
; | |
# prevent the reinstallation of vendors at every changes in the source code | |
COPY package.json yarn.lock ./ | |
RUN set -eux; \ | |
yarn install; \ | |
yarn cache clean | |
COPY --from=sylius_php /srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/UiBundle/Resources/private vendor/sylius/sylius/src/Sylius/Bundle/UiBundle/Resources/private/ | |
COPY --from=sylius_php /srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/Resources/private vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/Resources/private/ | |
COPY --from=sylius_php /srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/private vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/Resources/private/ | |
COPY --from=sylius_php /srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/gulpfile.babel.js vendor/sylius/sylius/src/Sylius/Bundle/AdminBundle/gulpfile.babel.js | |
COPY --from=sylius_php /srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/gulpfile.babel.js vendor/sylius/sylius/src/Sylius/Bundle/ShopBundle/gulpfile.babel.js | |
COPY gulpfile.babel.js .babelrc ./ | |
ARG APP_ENV=prod | |
RUN set -eux; \ | |
GULP_ENV=$APP_ENV yarn build | |
COPY docker/nodejs/docker-entrypoint.sh /usr/local/bin/docker-entrypoint | |
RUN chmod +x /usr/local/bin/docker-entrypoint | |
ENTRYPOINT ["docker-entrypoint"] | |
CMD ["yarn", "watch"] | |
FROM nginx:${NGINX_VERSION}-alpine AS nginx | |
# Nota: All'interno di default.conf, in locale usare 'php' come host per il php, mentre su AWS usare 127.0.0.1 | |
COPY docker/nginx/default.conf /etc/nginx/conf.d/ | |
# Immagine di produzione per AWS | |
FROM nginx:${NGINX_VERSION}-alpine AS sylius-nginx | |
COPY docker/nginx/default.conf.aws /etc/nginx/conf.d/default.conf | |
WORKDIR /srv/sylius | |
COPY --from=sylius_php /srv/sylius/public public/ | |
COPY --from=sylius_nodejs /srv/sylius/public public/ | |
VOLUME /srv/sylius/public |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment