Files
2026-03-09 17:17:59 -04:00

50 lines
1.2 KiB
Docker

ARG PHP_IMAGE=php:8.2-cli
ARG COMPOSER_IMAGE=composer:2
FROM ${COMPOSER_IMAGE} AS composer
FROM ${PHP_IMAGE}
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
unzip \
sqlite3 \
libsqlite3-dev \
default-mysql-client \
libonig-dev \
libxml2-dev \
&& docker-php-ext-install pdo_sqlite pdo_mysql mbstring xml \
&& rm -rf /var/lib/apt/lists/*
COPY --from=composer /usr/bin/composer /usr/bin/composer
ENV APP_DIR=/app
WORKDIR ${APP_DIR}
COPY . ${APP_DIR}
RUN printf '%s\n' \
'#!/bin/sh' \
'set -e' \
'if [ -z "${APP_KEY:-}" ]; then' \
' if command -v php >/dev/null 2>&1; then' \
' APP_KEY=$(php -r '"'"'echo "base64:" . base64_encode(random_bytes(32));'"'"')' \
' elif command -v openssl >/dev/null 2>&1; then' \
' APP_KEY=$(openssl rand -base64 32 | sed "s/^/base64:/")' \
' else' \
' echo "APP_KEY is required but php/openssl is unavailable." >&2' \
' exit 1' \
' fi' \
' export APP_KEY' \
'fi' \
'exec "$@"' \
> /usr/local/bin/ci-entrypoint \
&& chmod +x /usr/local/bin/ci-entrypoint
RUN if [ -f composer.json ]; then \
composer install --no-interaction --prefer-dist --no-progress; \
fi
ENTRYPOINT ["ci-entrypoint"]