- Game1 terminal: flesh out the virtual filesystem with a realistic spread of Linux directories/files (~70 dirs, ~140 files) so it no longer reads as an obviously small puzzle set, without touching any win-condition or rapport files. - Add app:hints:check command + a php-cron container (BusyBox crond) that nudges players who haven't contacted every teammate 5 minutes into a session, via a new 'hint' Mercure message type. - Log the cron command's output to var/log/cron/cron.log and rotate it (25MB / 90 days) via logrotate, run daily from the same crontab. - Redirect PHP's error_log and Symfony's prod app/deprecation logs from stderr-only into var/log/php/*.log (kept alongside stderr), with the same rotation policy. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
74 lines
1.8 KiB
Docker
74 lines
1.8 KiB
Docker
FROM php:8.3-fpm-alpine
|
|
|
|
# Install system deps
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
git \
|
|
icu-dev \
|
|
libzip-dev \
|
|
libxml2-dev \
|
|
oniguruma-dev \
|
|
g++ \
|
|
make \
|
|
nodejs \
|
|
npm \
|
|
shadow \
|
|
logrotate
|
|
|
|
# Install PHP extension installer
|
|
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
|
|
|
|
# Install PHP extensions
|
|
RUN install-php-extensions \
|
|
intl \
|
|
pdo_mysql \
|
|
opcache \
|
|
zip \
|
|
tokenizer \
|
|
ctype \
|
|
iconv \
|
|
mbstring \
|
|
dom \
|
|
xml \
|
|
simplexml \
|
|
xmlreader \
|
|
xmlwriter
|
|
|
|
# Install composer
|
|
ENV COMPOSER_ALLOW_SUPERUSER=1 \
|
|
COMPOSER_HOME=/tmp/composer
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
# Configure PHP
|
|
COPY docker/php/php.ini $PHP_INI_DIR/conf.d/zz-custom.ini
|
|
|
|
# Cron daemon (BusyBox's built-in crond) for the php-cron container.
|
|
# Harmless for the php/php-worker containers too, since they never invoke crond.
|
|
COPY docker/php/crontab /etc/crontabs/root
|
|
RUN chmod 0600 /etc/crontabs/root
|
|
|
|
# Log rotation for the cron hint-check and PHP error logs: 25MB per file, kept for 3 months.
|
|
COPY docker/php/logrotate/cron-hints.conf /etc/logrotate.d/cron-hints
|
|
COPY docker/php/logrotate/php-logs.conf /etc/logrotate.d/php-logs
|
|
|
|
# Adjust www-data UID/GID to match host user (default 1000)
|
|
ARG USER_ID=1000
|
|
ARG GROUP_ID=1000
|
|
|
|
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
|
|
userdel -f www-data &&\
|
|
if getent group www-data ; then groupdel www-data; fi &&\
|
|
groupadd -g ${GROUP_ID} www-data &&\
|
|
useradd -l -u ${USER_ID} -g www-data www-data &&\
|
|
install -d -m 0755 -o www-data -g www-data /home/www-data \
|
|
;fi
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
# Set permissions for Symfony directories
|
|
RUN mkdir -p var/cache var/log/cron var/log/php var/sessions && \
|
|
chown -R www-data:www-data var
|
|
|
|
# Default command
|
|
CMD ["php-fpm"]
|