incr/docker/build/Dockerfile.ci
myrmidex 1fecc2b47f
Some checks failed
CI / ci (push) Failing after 2s
CI / build (push) Failing after 1m9s
CI / ci (pull_request) Failing after 1s
CI / build (pull_request) Failing after 29s
57 - Add prebuilt CI image and images.yml workflow
2026-08-16 01:12:25 +02:00

35 lines
1.2 KiB
Text

# Image for CI: PHP, Composer and the extensions the suite needs. No runtime
# server; the frontend build runs in its own job on a node image.
#
# Published as incr-ci:php<version>-<revision>, not :latest. Runners cache
# mutable tags and will not re-pull them, so bump the revision in the tag and
# in ci.yml whenever this file changes.
#
# Debian-based rather than alpine: ffr hit repeated DNS resolution timeouts
# against codeload.github.com on the alpine build.
#
# pdo_mysql, not sqlite: the migration tests query information_schema and
# exercise MySQL-specific DDL, so CI runs against a real mysql:8.0 service.
FROM php:8.3-cli
COPY --from=mlocati/php-extension-installer:2 /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions \
pdo_mysql \
mbstring \
dom \
xml \
bcmath \
fileinfo \
pcntl \
gd \
pcov
# netcat-openbsd backs the MySQL readiness check in ci.yml.
# nodejs is not used by the app's tests; the Forgejo JavaScript actions
# (checkout, cache) are executed with it inside this container.
RUN apt-get update \
&& apt-get install -y --no-install-recommends git unzip nodejs netcat-openbsd \
&& rm -rf /var/lib/apt/lists/*
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer