Skip to content

Commit

Permalink
refactor #536 Dockerfile and docker-compose update for php version 7.…
Browse files Browse the repository at this point in the history
…4 (arti0090)

This PR was merged into the 1.9-dev branch.

Discussion
----------



Commits
-------

49976be Update dockerfile and docker-compose file to work with php 7.4
45b276f restore composer.lock for better performance built
fe56227 Revert "restore composer.lock for better performance built"
71d3ce0 nodejs to node
084405a Add fix for composer files
  • Loading branch information
lchrusciel authored May 28, 2021
2 parents 5d0ea4a + 084405a commit ba244da
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 92 deletions.
143 changes: 71 additions & 72 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,73 +1,71 @@
# 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 PHP_VERSION=7.4
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 \
;
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

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=/usr/include/ --with-webp=/usr/include --with-freetype=/usr/include/; \
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 --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 clear-cache
composer clear-cache
ENV PATH="${PATH}:/root/.composer/vendor/bin"

WORKDIR /srv/sylius
Expand All @@ -76,10 +74,10 @@ WORKDIR /srv/sylius
ARG APP_ENV=prod

# prevent the reinstallation of vendors at every changes in the source code
COPY composer.json composer.lock symfony.lock ./
COPY composer.* symfony.lock ./
RUN set -eux; \
composer install --prefer-dist --no-autoloader --no-scripts --no-progress --no-suggest; \
composer clear-cache
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 ./
Expand All @@ -91,12 +89,13 @@ 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
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
Expand All @@ -107,24 +106,24 @@ RUN chmod +x /usr/local/bin/docker-entrypoint
ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"]

FROM node:${NODE_VERSION}-alpine AS sylius_nodejs
FROM node:${NODE_VERSION}-alpine AS sylius_node

WORKDIR /srv/sylius

RUN set -eux; \
apk add --no-cache --virtual .build-deps \
g++ \
gcc \
git \
make \
python \
;
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
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/
Expand All @@ -135,9 +134,9 @@ COPY --from=sylius_php /srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/ShopBu

COPY gulpfile.babel.js .babelrc ./
RUN set -eux; \
GULP_ENV=prod yarn build
GULP_ENV=prod yarn build

COPY docker/nodejs/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
COPY docker/node/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint

ENTRYPOINT ["docker-entrypoint"]
Expand All @@ -150,4 +149,4 @@ 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/
COPY --from=sylius_node /srv/sylius/public public/
39 changes: 21 additions & 18 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ services:
build:
context: .
target: sylius_php
cache_from:
- quay.io/sylius/php:latest
- quay.io/sylius/nodejs:latest
- quay.io/sylius/nginx:latest
image: quay.io/sylius/php:latest
# Quay does not work, should be replaced in future with f.e. ghcr.io
# cache_from:
# - quay.io/sylius/php:latest
# - quay.io/sylius/nodejs:latest
# - quay.io/sylius/nginx:latest
image: php:latest
depends_on:
- mysql
environment:
Expand Down Expand Up @@ -42,15 +43,16 @@ services:
ports:
- "3306:3306"

nodejs:
node:
build:
context: .
target: sylius_nodejs
cache_from:
- quay.io/sylius/php:latest
- quay.io/sylius/nodejs:latest
- quay.io/sylius/nginx:latest
image: quay.io/sylius/nodejs:latest
target: sylius_node
# Quay does not work, should be replaced in future with f.e. ghcr.io
# cache_from:
# - quay.io/sylius/php:latest
# - quay.io/sylius/nodejs:latest
# - quay.io/sylius/nginx:latest
image: node:latest
depends_on:
- php
environment:
Expand All @@ -67,14 +69,15 @@ services:
build:
context: .
target: sylius_nginx
cache_from:
- quay.io/sylius/php:latest
- quay.io/sylius/nodejs:latest
- quay.io/sylius/nginx:latest
image: quay.io/sylius/nginx:latest
image: nginx:latest
# Quay does not work, should be replaced in future with f.e. ghcr.io
# cache_from:
# - quay.io/sylius/php:latest
# - quay.io/sylius/nodejs:latest
# - quay.io/sylius/nginx:latest
depends_on:
- php
- nodejs # to ensure correct build order
- node # to ensure correct build order
volumes:
- ./public:/srv/sylius/public:ro
# if you develop on Linux, you may use a bind-mounted host directory instead
Expand Down
7 changes: 5 additions & 2 deletions docker/nginx/conf.d/default.conf
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
server {
root /srv/sylius/public;
listen *:80;

location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}

location ~ ^/index\.php(/|$) {
# Comment the next line and uncomment the next to enable dynamic resolution (incompatible with Kubernetes)
fastcgi_pass php:9000;
resolver 127.0.0.11 valid=10s ipv6=off;
set $backendfpm "php:9000";
fastcgi_pass $backendfpm;
# Comment the next line and uncomment the next to enable dynamic resolution (incompatible with Kubernetes);
#resolver 127.0.0.11;
#set $upstream_host php;
#fastcgi_pass $upstream_host:9000;
Expand Down
File renamed without changes.

0 comments on commit ba244da

Please sign in to comment.