# syntax=docker/dockerfile:1 #checkov:skip=CKV_DOCKER_2 #checkov:skip=CKV_DOCKER_3 #checkov:skip=CKV_DOCKER_7 FROM golang-base ARG TARGETARCH ARG FRANKENPHP_VERSION='' ENV FRANKENPHP_VERSION=${FRANKENPHP_VERSION} ARG PHP_VERSION='' ENV PHP_VERSION=${PHP_VERSION} # args passed to static-php-cli ARG PHP_EXTENSIONS='' ARG PHP_EXTENSION_LIBS='' ARG SPC_OPT_BUILD_ARGS # args passed to xcaddy ARG XCADDY_ARGS='--with github.com/dunglas/caddy-cbrotli --with github.com/dunglas/mercure/caddy --with github.com/dunglas/vulcain/caddy' ENV SPC_CMD_VAR_FRANKENPHP_XCADDY_MODULES="${XCADDY_ARGS}" ARG CLEAN='' ARG EMBED='' ARG DEBUG_SYMBOLS='' ARG MIMALLOC='' ARG NO_COMPRESS='' ENV GOTOOLCHAIN=local SHELL ["/bin/ash", "-eo", "pipefail", "-c"] ARG CI ENV CI=${CI} LABEL org.opencontainers.image.title=FrankenPHP LABEL org.opencontainers.image.description="The modern PHP app server" LABEL org.opencontainers.image.url=https://frankenphp.dev LABEL org.opencontainers.image.source=https://github.com/php/frankenphp LABEL org.opencontainers.image.licenses=MIT LABEL org.opencontainers.image.vendor="Kévin Dunglas" RUN apk update; \ apk add --no-cache \ alpine-sdk \ autoconf \ automake \ bash \ binutils \ bison \ build-base \ cmake \ curl \ file \ flex \ g++ \ gcc \ git \ jq \ libgcc \ libstdc++ \ libtool \ linux-headers \ m4 \ make \ pkgconfig \ php84 \ php84-common \ php84-ctype \ php84-curl \ php84-dom \ php84-iconv \ php84-mbstring \ php84-openssl \ php84-pcntl \ php84-phar \ php84-posix \ php84-session \ php84-sodium \ php84-tokenizer \ php84-xml \ php84-xmlwriter \ upx \ wget \ xz ; \ ln -sf /usr/bin/php84 /usr/bin/php && \ go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest # https://getcomposer.org/doc/03-cli.md#composer-allow-superuser ENV COMPOSER_ALLOW_SUPERUSER=1 COPY --from=composer/composer:2-bin /composer /usr/bin/composer WORKDIR /go/src/app COPY go.mod go.sum ./ RUN go mod download WORKDIR /go/src/app/caddy COPY caddy/go.mod caddy/go.sum ./ RUN go mod download WORKDIR /go/src/app COPY --link . ./ ENV SPC_DEFAULT_C_FLAGS='-fPIE -fPIC -O3' ENV SPC_LIBC='musl' ENV SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM='-Wl,-O3 -pie' # Keep default config paths and append any externally provided SPC_OPT_BUILD_ARGS (e.g., from CI) ENV SPC_OPT_BUILD_ARGS="--with-config-file-path=/etc/frankenphp --with-config-file-scan-dir=/etc/frankenphp/php.d ${SPC_OPT_BUILD_ARGS}" ENV SPC_REL_TYPE='binary' ENV EXTENSION_DIR='/usr/lib/frankenphp/modules' RUN --mount=type=secret,id=github-token GITHUB_TOKEN=$(cat /run/secrets/github-token) ./build-static.sh