mirror of
https://github.com/ericasch6/scrum-poker-internal.git
synced 2026-10-13 15:52:09 +00:00
110 lines
3.1 KiB
Docker
110 lines
3.1 KiB
Docker
ARG COMPOSER_IMAGE=composer:2.9.5@sha256:698d3801b2a622ace460c4743c781282fcbcb733a4cbf8b31c44731e846585e8
|
|
ARG NODE_IMAGE=node:22-bookworm-slim@sha256:d649c27dae7ba0137b3cef5dd75baa422c08dc3d9e3fc0c23dfb172dc3cc6436
|
|
ARG PHP_IMAGE=php:8.4-fpm-bookworm@sha256:c5fb7a0c02f4efe280691910c8b734995fa83598cdcf3115ef5dcb2e4617681c
|
|
|
|
FROM ${COMPOSER_IMAGE} AS composer_binary
|
|
FROM ${NODE_IMAGE} AS node_binary
|
|
|
|
FROM ${PHP_IMAGE} AS php_base
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
gettext-base \
|
|
git \
|
|
libfcgi-bin \
|
|
libfreetype6-dev \
|
|
libicu-dev \
|
|
libjpeg62-turbo-dev \
|
|
libmagickwand-dev \
|
|
libonig-dev \
|
|
libpng-dev \
|
|
libpq-dev \
|
|
libsqlite3-dev \
|
|
libssl-dev \
|
|
libxml2-dev \
|
|
libzip-dev \
|
|
nginx \
|
|
procps \
|
|
unzip \
|
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
&& docker-php-ext-install -j"$(nproc)" \
|
|
bcmath \
|
|
gd \
|
|
intl \
|
|
opcache \
|
|
pcntl \
|
|
pdo_mysql \
|
|
pdo_pgsql \
|
|
pdo_sqlite \
|
|
pgsql \
|
|
soap \
|
|
zip \
|
|
&& pecl install imagick \
|
|
&& docker-php-ext-enable imagick \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
COPY --from=composer_binary /usr/bin/composer /usr/local/bin/composer
|
|
|
|
WORKDIR /var/www
|
|
|
|
FROM php_base AS build
|
|
|
|
COPY --from=node_binary /usr/local/ /usr/local/
|
|
COPY . /var/www
|
|
|
|
RUN composer install --prefer-dist --no-interaction --no-progress \
|
|
&& npm ci \
|
|
&& npm run build
|
|
|
|
FROM build AS test
|
|
|
|
RUN touch .env \
|
|
&& composer audit --locked --no-interaction \
|
|
&& COMPOSER_ALLOW_SUPERUSER=1 composer ci:check
|
|
|
|
FROM build AS production_builder
|
|
|
|
RUN composer install \
|
|
--classmap-authoritative \
|
|
--no-dev \
|
|
--no-interaction \
|
|
--no-progress \
|
|
--prefer-dist \
|
|
&& rm -rf node_modules tests phpunit.xml
|
|
|
|
FROM php_base AS runtime
|
|
|
|
COPY docker/entrypoint.sh /usr/local/bin/laravel-entrypoint
|
|
COPY docker/nginx/nginx.conf.template /etc/nginx/nginx.conf.template
|
|
COPY docker/php-fpm-healthcheck.sh /usr/local/bin/php-fpm-healthcheck
|
|
COPY --from=production_builder --chown=www-data:www-data /var/www /var/www
|
|
|
|
RUN chmod +x /usr/local/bin/laravel-entrypoint /usr/local/bin/php-fpm-healthcheck \
|
|
&& mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
|
|
&& printf '%s\n' \
|
|
'[global]' \
|
|
'daemonize = no' \
|
|
'' \
|
|
'[www]' \
|
|
'pm.status_path = /status' \
|
|
> /usr/local/etc/php-fpm.d/zz-laravel.conf \
|
|
&& mkdir -p \
|
|
/var/www/bootstrap/cache \
|
|
/var/www/storage/app/public \
|
|
/var/www/storage/framework/cache \
|
|
/var/www/storage/framework/sessions \
|
|
/var/www/storage/framework/testing \
|
|
/var/www/storage/framework/views \
|
|
/var/www/storage/logs \
|
|
&& ln -s ../storage/app/public /var/www/public/storage \
|
|
&& chown -R www-data:www-data /var/www/bootstrap/cache /var/www/storage
|
|
|
|
USER www-data
|
|
|
|
EXPOSE 8080 9000
|
|
|
|
ENTRYPOINT ["laravel-entrypoint"]
|
|
CMD ["php-fpm"]
|