From 562599b00f1d309532d8b336b6a5f6e894628b3b Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Sat, 17 Apr 2021 15:23:45 +0200 Subject: [PATCH] Create base images with variants corresponding to PHP image variants --- build/api/fpm.Dockerfile | 20 +----------------- build/api/rr.Dockerfile | 22 +++----------------- build/base/Dockerfile | 2 ++ build/base/cli.Dockerfile | 27 ++++++++++++++++++++++++ build/base/fpm.Dockerfile | 27 ++++++++++++++++++++++++ build/release.sh | 10 +++++---- build/standalone/rr.Dockerfile | 16 +++++++++----- build/standalone/supervisord-init.sh | 7 +++++++ build/worker/Dockerfile | 31 ++++++++-------------------- build/worker/supervisord-init.sh | 7 +++++++ 10 files changed, 100 insertions(+), 69 deletions(-) create mode 100644 build/base/cli.Dockerfile create mode 100644 build/base/fpm.Dockerfile create mode 100755 build/standalone/supervisord-init.sh create mode 100755 build/worker/supervisord-init.sh diff --git a/build/api/fpm.Dockerfile b/build/api/fpm.Dockerfile index 3e1a422..4f23641 100644 --- a/build/api/fpm.Dockerfile +++ b/build/api/fpm.Dockerfile @@ -1,24 +1,6 @@ ARG BASE_VERSION=latest ARG REGISTRY=docker.io -FROM $REGISTRY/cojedzie/base:$BASE_VERSION as base - -FROM php:7.4-fpm-alpine - -LABEL maintainer="Kacper Donat " - -COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ - -WORKDIR /var/www - -RUN install-php-extensions bcmath intl opcache zip sockets; - -COPY --from=base /var/www /var/www - -ENV APP_ENV=prod -ENV DATABASE_URL="sqlite:////var/db/app.db" -ENV PATH=$PATH:/var/www/bin - -VOLUME /var/db +FROM $REGISTRY/cojedzie/base:${BASE_VERSION}-fpm as base CMD ["./bin/docker-init.sh", "php-fpm"] diff --git a/build/api/rr.Dockerfile b/build/api/rr.Dockerfile index 854d3b2..5fe6e2b 100644 --- a/build/api/rr.Dockerfile +++ b/build/api/rr.Dockerfile @@ -1,26 +1,10 @@ ARG BASE_VERSION=latest ARG REGISTRY=docker.io -FROM $REGISTRY/cojedzie/base:$BASE_VERSION as base +FROM $REGISTRY/cojedzie/base:${BASE_VERSION} as base -FROM php:7.4-alpine - -LABEL maintainer="Kacper Donat " - -COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ - -WORKDIR /var/www - -RUN install-php-extensions bcmath intl opcache zip sockets; - -COPY --from=base /var/www /var/www - -ENV APP_ENV=prod -ENV DATABASE_URL="sqlite:////var/db/app.db" -ENV PATH=$PATH:/var/www/bin - -VOLUME /var/db +COPY --from=spiralscout/roadrunner:1.9.2 /usr/bin/rr /usr/bin/rr EXPOSE 8080 -CMD ["./bin/docker-init.sh", "rr", "serve"] +CMD ["./bin/docker-init.sh", "rr", "serve", "-v"] diff --git a/build/base/Dockerfile b/build/base/Dockerfile index 5d6dcef..818a928 100644 --- a/build/base/Dockerfile +++ b/build/base/Dockerfile @@ -24,5 +24,7 @@ ENV APP_ENV=prod RUN composer run-script post-install-cmd +VOLUME /var/db + # This image is not meant to be run, just to prepare all required files CMD ["/bin/false"] diff --git a/build/base/cli.Dockerfile b/build/base/cli.Dockerfile new file mode 100644 index 0000000..72552b6 --- /dev/null +++ b/build/base/cli.Dockerfile @@ -0,0 +1,27 @@ +ARG BASE_VERSION=latest +ARG REGISTRY=docker.io + +FROM $REGISTRY/cojedzie/base:$BASE_VERSION as base + +FROM php:7.4-cli-alpine + +LABEL maintainer="Kacper Donat " + +COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ + +WORKDIR /var/www + +RUN install-php-extensions bcmath intl opcache zip sockets; + +COPY composer.json composer.lock ./ + +COPY --from=base /var/www /var/www + +ENV APP_ENV=prod +ENV DATABASE_URL="sqlite:////var/db/app.db" +ENV PATH=$PATH:/var/www/bin + +VOLUME /var/db + +# This image is not meant to be run, just to prepare all required files +CMD ["/bin/false"] diff --git a/build/base/fpm.Dockerfile b/build/base/fpm.Dockerfile new file mode 100644 index 0000000..06bd388 --- /dev/null +++ b/build/base/fpm.Dockerfile @@ -0,0 +1,27 @@ +ARG BASE_VERSION=latest +ARG REGISTRY=docker.io + +FROM $REGISTRY/cojedzie/base:$BASE_VERSION as base + +FROM php:7.4-fpm-alpine + +LABEL maintainer="Kacper Donat " + +COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ + +WORKDIR /var/www + +RUN install-php-extensions bcmath intl opcache zip sockets; + +COPY composer.json composer.lock ./ + +COPY --from=base /var/www /var/www + +ENV APP_ENV=prod +ENV DATABASE_URL="sqlite:////var/db/app.db" +ENV PATH=$PATH:/var/www/bin + +VOLUME /var/db + +# This image is not meant to be run, just to prepare all required files +CMD ["/bin/false"] diff --git a/build/release.sh b/build/release.sh index ba72706..9dcf916 100755 --- a/build/release.sh +++ b/build/release.sh @@ -135,20 +135,22 @@ fi if [ $BUILD_BASE -eq 1 ]; then build --no-register base $ROOT/api/ || exit 1 + build --no-register --variant fpm base $ROOT/api/ || exit 1 + build --no-register --variant cli base $ROOT/api/ || exit 1 fi while [ $# -gt 0 ] do case "$1" in api) - build api $ROOT/api/ --variant rr --default || exit 1 - build api $ROOT/api/ --variant fpm || exit 1 + build api $BUILD/api/ --variant rr --default || exit 1 + build api $BUILD/api/ --variant fpm || exit 1 ;; standalone) - build standalone $ROOT/api/ --variant rr --default || exit 1 + build standalone $BUILD/standalone/ --variant rr --default || exit 1 ;; worker) - build worker $ROOT/api/ || exit 1 + build worker $BUILD/worker/ || exit 1 ;; front) build front $ROOT/front/ || exit 1 diff --git a/build/standalone/rr.Dockerfile b/build/standalone/rr.Dockerfile index 0fcd071..a41406d 100644 --- a/build/standalone/rr.Dockerfile +++ b/build/standalone/rr.Dockerfile @@ -3,13 +3,14 @@ ARG REGISTRY=docker.io FROM ${REGISTRY}/cojedzie/api:${BASE_VERSION}-rr -RUN apk add supervisor && \ +# escape=` +RUN apk add supervisor gettext && \ { \ echo '[supervisord]'; \ echo 'nodaemon=true'; \ echo ; \ echo '[program:roadrunner]'; \ - echo 'command=rr serve'; \ + echo 'command=rr serve -v'; \ echo 'startsecs=0'; \ echo 'start=true'; \ echo 'autorestart=true'; \ @@ -19,7 +20,7 @@ RUN apk add supervisor && \ echo 'stderr_logfile_maxbytes=0'; \ echo ; \ echo '[program:messenger-consumer]'; \ - echo 'command=php /var/www/bin/console messenger:consume main -vv --time-limit=86400 --limit=10'; \ + echo 'command=php /var/www/bin/console messenger:consume $COJEDZIE_WORKER_OPTS $COJEDZIE_WORKER_QUEUES'; \ echo 'startsecs=0'; \ echo 'start=true'; \ echo 'autorestart=true'; \ @@ -27,6 +28,11 @@ RUN apk add supervisor && \ echo 'stderr_logfile=/dev/stderr'; \ echo 'stdout_logfile_maxbytes=0'; \ echo 'stderr_logfile_maxbytes=0'; \ - } | tee /etc/supervisord.conf; + } | tee /etc/supervisord.conf.tpl; -CMD ["./bin/docker-init.sh", "supervisord", "-c", "/etc/supervisord.conf"] +COPY ./supervisord-init.sh ./bin/ + +ENV COJEDZIE_WORKER_QUEUES=main +ENV COJEDZIE_WORKER_OPTS="-vv --time-limit=86400 --limit=10 --memory-limit=128M" + +CMD ["./bin/supervisord-init.sh", "supervisord", "-c", "/etc/supervisord.conf"] diff --git a/build/standalone/supervisord-init.sh b/build/standalone/supervisord-init.sh new file mode 100755 index 0000000..a61b86e --- /dev/null +++ b/build/standalone/supervisord-init.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -f /etc/supervisord.conf.tpl ]; then + envsubst < /etc/supervisord.conf.tpl > /etc/supervisord.conf +fi + +exec "$@" diff --git a/build/worker/Dockerfile b/build/worker/Dockerfile index eeb7cee..1fe0fc3 100644 --- a/build/worker/Dockerfile +++ b/build/worker/Dockerfile @@ -1,31 +1,15 @@ ARG BASE_VERSION=latest ARG REGISTRY=docker.io -FROM $REGISTRY/cojedzie/base:$BASE_VERSION as base +FROM $REGISTRY/cojedzie/base:${BASE_VERSION}-cli -FROM php:7.4-cli-alpine - -LABEL maintainer="Kacper Donat " - -COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ - -WORKDIR /var/www - -RUN install-php-extensions bcmath intl opcache zip sockets; - -COPY --from=base /var/www /var/www - -ENV APP_ENV=prod -ENV DATABASE_URL="sqlite:////var/db/app.db" -ENV PATH=$PATH:/var/www/bin - -RUN apk add supervisor && \ +RUN apk add supervisor gettext && \ { \ echo '[supervisord]'; \ echo 'nodaemon=true'; \ echo ; \ echo '[program:messenger-consumer]'; \ - echo 'command=php /var/www/bin/console messenger:consume main -vv --time-limit=86400 --limit=10'; \ + echo 'command=php /var/www/bin/console messenger:consume $COJEDZIE_WORKER_OPTS $COJEDZIE_WORKER_QUEUES'; \ echo 'startsecs=0'; \ echo 'start=true'; \ echo 'autorestart=true'; \ @@ -33,8 +17,11 @@ RUN apk add supervisor && \ echo 'stderr_logfile=/dev/stderr'; \ echo 'stdout_logfile_maxbytes=0'; \ echo 'stderr_logfile_maxbytes=0'; \ - } | tee /etc/supervisord.conf; + } | tee /etc/supervisord.conf.tpl; -VOLUME /var/db +COPY ./supervisord-init.sh ./bin/ -CMD ["supervisord", "-c", "/etc/supervisord.conf"] +ENV COJEDZIE_WORKER_QUEUES=main +ENV COJEDZIE_WORKER_OPTS="-vv --time-limit=86400 --limit=10 --memory-limit=128M" + +CMD ["./bin/supervisord-init.sh", "supervisord", "-c", "/etc/supervisord.conf"] diff --git a/build/worker/supervisord-init.sh b/build/worker/supervisord-init.sh new file mode 100755 index 0000000..a61b86e --- /dev/null +++ b/build/worker/supervisord-init.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -f /etc/supervisord.conf.tpl ]; then + envsubst < /etc/supervisord.conf.tpl > /etc/supervisord.conf +fi + +exec "$@"