Created
March 13, 2019 07:03
-
-
Save imanalopher/a271633b803cfe6ccf1577ab0de314b5 to your computer and use it in GitHub Desktop.
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.2 | |
ARG NODE_VERSION=10 | |
ARG NGINX_VERSION=1.15 | |
FROM php:${PHP_VERSION}-fpm-alpine AS sylius_php | |
# persistent / runtime deps | |
RUN apk add --no-cache \ | |
acl \ | |
file \ | |
gettext \ | |
git \ | |
mariadb-client \ | |
imagemagick \ | |
libgcc libstdc++ libx11 glib libxrender libxext libintl \ | |
libressl2.7-libcrypto \ | |
ttf-dejavu ttf-droid ttf-freefont ttf-liberation ttf-ubuntu-font-family \ | |
; | |
ARG APCU_VERSION=5.1.11 | |
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 \ | |
autoconf \ | |
g++ \ | |
make \ | |
pcre-dev \ | |
imagemagick-dev \ | |
imagemagick \ | |
; \ | |
\ | |
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} \ | |
imagick \ | |
; \ | |
pecl clear-cache; \ | |
docker-php-ext-enable \ | |
apcu \ | |
opcache \ | |
imagick \ | |
; \ | |
\ | |
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 autoconf g++ libtool make pcre-dev | |
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer | |
COPY docker/php/php.ini /usr/local/etc/php/php.ini | |
COPY docker/php/php-cli.ini /usr/local/etc/php/php-cli.ini | |
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser | |
ENV COMPOSER_ALLOW_SUPERUSER=1 | |
RUN set -eux; \ | |
composer global require "hirak/prestissimo:^0.3" --prefer-dist --no-progress --no-suggest --classmap-authoritative; \ | |
composer clear-cache | |
ENV PATH="${PATH}:/root/.composer/vendor/bin:/srv/sylius/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 --no-suggest; \ | |
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/var | |
VOLUME /srv/sylius/public/media | |
COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint | |
RUN chmod +x /usr/local/bin/docker-entrypoint | |
COPY docker/php/docker-entrypoint-enqueue.sh /usr/local/bin/docker-entrypoint-enqueue | |
RUN chmod +x /usr/local/bin/docker-entrypoint-enqueue | |
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 ./ | |
COPY source_assets/app source_assets/app/ | |
RUN set -eux; \ | |
GULP_ENV=prod 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 sylius_nginx | |
COPY docker/nginx/conf.d/default.conf /etc/nginx/conf.d/ | |
WORKDIR /srv/sylius | |
COPY --from=sylius_php /srv/sylius/public public/ | |
COPY --from=sylius_nodejs /srv/sylius/public public/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment