forum/Dockerfile

125 lines
3.4 KiB
Docker
Raw Normal View History

2018-06-25 00:21:05 +02:00
# the different stages of this Dockerfile are meant to be built into separate images
2019-06-27 12:03:08 +02:00
# https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage
2018-06-25 00:21:05 +02:00
# https://docs.docker.com/compose/compose-file/#target
2019-06-27 12:03:08 +02:00
# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG PHP_VERSION=8.0
ARG CADDY_VERSION=2
2018-06-25 00:21:05 +02:00
2019-06-27 12:03:08 +02:00
# "php" stage
2019-12-03 21:00:08 +01:00
FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
2017-04-22 20:29:25 +02:00
2019-06-27 12:03:08 +02:00
# persistent / runtime deps
2019-04-27 19:18:26 +01:00
RUN apk add --no-cache \
2019-12-03 21:00:08 +01:00
acl \
fcgi \
file \
gettext \
git \
jq \
;
2020-10-14 22:14:41 +02:00
ARG APCU_VERSION=5.1.19
2019-06-27 12:03:08 +02:00
RUN set -eux; \
apk add --no-cache --virtual .build-deps \
2019-12-03 21:00:08 +01:00
$PHPIZE_DEPS \
icu-dev \
libzip-dev \
zlib-dev \
2019-06-27 12:03:08 +02:00
; \
\
2019-12-20 23:18:01 +01:00
docker-php-ext-configure zip; \
2019-06-27 12:03:08 +02:00
docker-php-ext-install -j$(nproc) \
2019-12-03 21:00:08 +01:00
intl \
zip \
2019-06-27 12:03:08 +02:00
; \
pecl install \
2019-12-03 21:00:08 +01:00
apcu-${APCU_VERSION} \
2019-06-27 12:03:08 +02:00
; \
pecl clear-cache; \
docker-php-ext-enable \
2019-12-03 21:00:08 +01:00
apcu \
opcache \
2019-06-27 12:03:08 +02:00
; \
\
runDeps="$( \
2019-12-03 21:00:08 +01:00
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 }' \
2019-06-27 12:03:08 +02:00
)"; \
apk add --no-cache --virtual .phpexts-rundeps $runDeps; \
\
apk del .build-deps
2017-04-22 20:29:25 +02:00
2018-10-13 02:13:23 +02:00
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
2019-12-03 21:00:08 +01:00
2019-06-27 12:03:08 +02:00
RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
2020-10-14 22:14:41 +02:00
COPY docker/php/conf.d/symfony.prod.ini $PHP_INI_DIR/conf.d/symfony.ini
2017-04-22 20:29:25 +02:00
2019-12-03 21:00:08 +01:00
RUN set -eux; \
{ \
echo '[www]'; \
echo 'ping.path = /ping'; \
} | tee /usr/local/etc/php-fpm.d/docker-healthcheck.conf
2017-04-22 20:29:25 +02:00
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
2019-06-27 12:03:08 +02:00
ENV COMPOSER_ALLOW_SUPERUSER=1
2019-06-27 12:03:08 +02:00
ENV PATH="${PATH}:/root/.composer/vendor/bin"
WORKDIR /srv/app
2017-04-22 20:29:25 +02:00
2017-10-19 22:32:57 +02:00
# Allow to use development versions of Symfony
2018-10-25 14:40:54 +02:00
ARG STABILITY="stable"
2018-08-23 15:17:35 +02:00
ENV STABILITY ${STABILITY:-stable}
2017-10-19 22:32:57 +02:00
2017-10-26 14:51:56 +02:00
# Allow to select skeleton version
ARG SYMFONY_VERSION=""
2017-10-26 14:51:56 +02:00
2017-10-16 14:46:43 +02:00
# Download the Symfony skeleton and leverage Docker cache layers
2020-06-20 01:27:16 +02:00
RUN composer create-project "symfony/skeleton ${SYMFONY_VERSION}" . --stability=$STABILITY --prefer-dist --no-dev --no-progress --no-interaction; \
2019-06-27 12:03:08 +02:00
composer clear-cache
2017-04-22 20:29:25 +02:00
2017-11-22 08:52:31 +01:00
###> recipes ###
###< recipes ###
COPY . .
2017-04-22 20:29:25 +02:00
2019-06-27 12:03:08 +02:00
RUN set -eux; \
mkdir -p var/cache var/log; \
2020-06-20 01:27:16 +02:00
composer install --prefer-dist --no-dev --no-progress --no-scripts --no-interaction; \
2019-06-27 12:03:08 +02:00
composer dump-autoload --classmap-authoritative --no-dev; \
2020-06-20 01:27:16 +02:00
composer symfony:dump-env prod; \
2019-06-27 12:03:08 +02:00
composer run-script --no-dev post-install-cmd; sync
VOLUME /srv/app/var
2019-12-03 21:00:08 +01:00
COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
RUN chmod +x /usr/local/bin/docker-healthcheck
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
2019-06-27 12:03:08 +02:00
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 caddy:${CADDY_VERSION}-builder-alpine AS symfony_caddy_builder
2019-06-27 12:03:08 +02:00
RUN xcaddy build \
--with github.com/dunglas/mercure@main \
--with github.com/dunglas/mercure/caddy@main \
--with github.com/dunglas/vulcain/caddy
2019-06-27 12:03:08 +02:00
FROM caddy:${CADDY_VERSION} AS symfony_caddy
2019-06-27 12:03:08 +02:00
WORKDIR /srv/app
ENV MERCURE_DEMO="demo /srv/mercure-assets/"
COPY --from=dunglas/mercure:v0.11 /srv/public /srv/mercure-assets/
COPY --from=symfony_caddy_builder /usr/bin/caddy /usr/bin/caddy
2019-12-03 21:00:08 +01:00
COPY --from=symfony_php /srv/app/public public/
COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile