mirror of
https://github.com/dunglas/frankenphp
synced 2024-11-23 08:39:21 +00:00
b32e738d75
Signed-off-by: Natsuki Ikeguchi <me@s6n.jp>
89 lines
3.1 KiB
Docker
89 lines
3.1 KiB
Docker
# syntax=docker/dockerfile:1
|
|
FROM golang-base
|
|
|
|
ARG FRANKENPHP_VERSION='dev'
|
|
ARG PHP_VERSION='8.3'
|
|
ARG PHP_EXTENSIONS='apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,exif,fileinfo,filter,gd,iconv,intl,ldap,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_pgsql,pdo_sqlite,pgsql,phar,posix,readline,redis,session,simplexml,sockets,sqlite3,sysvsem,tokenizer,xml,xmlreader,xmlwriter,zip,zlib'
|
|
ARG PHP_EXTENSION_LIBS='freetype,libjpeg,libavif,libwebp,libzip,bzip2'
|
|
|
|
RUN apk update; \
|
|
apk add --no-cache \
|
|
autoconf \
|
|
automake \
|
|
bash \
|
|
binutils \
|
|
bison \
|
|
build-base \
|
|
cmake \
|
|
curl \
|
|
file \
|
|
flex \
|
|
g++ \
|
|
gcc \
|
|
git \
|
|
jq \
|
|
libgcc \
|
|
libstdc++ \
|
|
libtool \
|
|
linux-headers \
|
|
m4 \
|
|
make \
|
|
pkgconfig \
|
|
wget \
|
|
xz ; \
|
|
apk add --no-cache \
|
|
--repository=https://dl-cdn.alpinelinux.org/alpine/edge/main \
|
|
--repository=https://dl-cdn.alpinelinux.org/alpine/edge/community \
|
|
php83 \
|
|
php83-common \
|
|
php83-curl \
|
|
php83-dom \
|
|
php83-mbstring \
|
|
php83-openssl \
|
|
php83-pcntl \
|
|
php83-phar \
|
|
php83-posix \
|
|
php83-sodium \
|
|
php83-tokenizer \
|
|
php83-xml \
|
|
php83-xmlwriter; \
|
|
ln -sf /usr/bin/php83 /usr/bin/php
|
|
|
|
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
|
|
ENV COMPOSER_ALLOW_SUPERUSER=1
|
|
ENV PATH="${PATH}:/root/.composer/vendor/bin"
|
|
|
|
COPY --from=composer/composer:2-bin --link /composer /usr/bin/composer
|
|
|
|
WORKDIR /static-php-cli
|
|
|
|
RUN git clone --depth=1 https://github.com/crazywhalecc/static-php-cli . && \
|
|
composer install --no-cache --no-dev --classmap-authoritative
|
|
|
|
RUN --mount=type=secret,id=github-token GITHUB_TOKEN=$(cat /run/secrets/github-token) ./bin/spc download --with-php=$PHP_VERSION --for-extensions="$PHP_EXTENSIONS"
|
|
|
|
RUN ./bin/spc build --build-embed --enable-zts --disable-opcache-jit "$PHP_EXTENSIONS" --with-libs="$PHP_EXTENSION_LIBS"
|
|
|
|
ENV PATH="/static-php-cli/buildroot/bin:/static-php-cli/buildroot/usr/bin:$PATH"
|
|
|
|
WORKDIR /go/src/app
|
|
|
|
COPY go.mod go.sum ./
|
|
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
|
|
|
|
RUN mkdir caddy && cd caddy
|
|
COPY caddy/go.mod caddy/go.sum ./caddy/
|
|
|
|
RUN cd caddy && go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
|
|
|
|
COPY *.* ./
|
|
COPY caddy caddy
|
|
COPY C-Thread-Pool C-Thread-Pool
|
|
|
|
RUN cd caddy/frankenphp && \
|
|
CGO_CFLAGS="$(/static-php-cli/buildroot/bin/php-config --includes | sed s#-I/#-I/static-php-cli/buildroot/#g)" \
|
|
CGO_LDFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $(/static-php-cli/buildroot/bin/php-config --ldflags) -Wl,--start-group $(/static-php-cli/buildroot/bin/php-config --libs | sed -e 's/-lgcc_s//g') -Wl,--end-group" \
|
|
LIBPHP_VERSION="$(/static-php-cli/buildroot/bin/php-config --version)" \
|
|
go build -buildmode=pie -tags "cgo netgo osusergo static_build" -ldflags "-linkmode=external -extldflags -static-pie -s -w -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $LIBPHP_VERSION Caddy'" && \
|
|
./frankenphp version
|