2023-01-14 08:14:57 +00:00
|
|
|
# syntax=docker/dockerfile:1
|
2023-07-07 16:17:06 +00:00
|
|
|
FROM php-base AS builder
|
|
|
|
|
2023-07-17 14:19:40 +00:00
|
|
|
ARG FRANKENPHP_VERSION='dev'
|
|
|
|
|
2023-07-07 16:17:06 +00:00
|
|
|
COPY --from=golang-base /usr/local/go/bin/go /usr/local/bin/go
|
|
|
|
COPY --from=golang-base /usr/local/go /usr/local/go
|
|
|
|
|
|
|
|
# This is required to link the FrankenPHP binary to the PHP binary
|
|
|
|
RUN apt-get update && \
|
|
|
|
apt-get -y --no-install-recommends install \
|
|
|
|
libargon2-dev \
|
|
|
|
libcurl4-openssl-dev \
|
|
|
|
libonig-dev \
|
|
|
|
libreadline-dev \
|
|
|
|
libsodium-dev \
|
|
|
|
libsqlite3-dev \
|
|
|
|
libssl-dev \
|
|
|
|
libxml2-dev \
|
|
|
|
zlib1g-dev \
|
|
|
|
&& \
|
|
|
|
apt-get clean
|
|
|
|
|
|
|
|
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
|
|
|
|
COPY internal internal
|
|
|
|
COPY testdata testdata
|
|
|
|
|
|
|
|
# todo: automate this?
|
|
|
|
# see https://github.com/docker-library/php/blob/master/8.2/bookworm/zts/Dockerfile#L57-L59 for PHP values
|
|
|
|
ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" CGO_CFLAGS=$PHP_CFLAGS CGO_CPPFLAGS=$PHP_CPPFLAGS
|
|
|
|
|
|
|
|
RUN cd caddy/frankenphp && \
|
2023-07-17 14:19:40 +00:00
|
|
|
go build -ldflags "-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION Caddy'" && \
|
2023-07-07 16:17:06 +00:00
|
|
|
cp frankenphp /usr/local/bin && \
|
|
|
|
cp /go/src/app/caddy/frankenphp/Caddyfile /etc/Caddyfile
|
|
|
|
|
|
|
|
ENTRYPOINT ["/bin/bash","-c"]
|
|
|
|
|
|
|
|
FROM php-base AS runner
|
2022-10-19 05:40:31 +00:00
|
|
|
|
2023-08-16 09:15:06 +00:00
|
|
|
ENV GODEBUG=cgocheck=0
|
|
|
|
|
2022-10-19 05:40:31 +00:00
|
|
|
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
|
2022-10-13 16:05:22 +00:00
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
RUN mkdir -p /app/public
|
|
|
|
RUN echo '<?php phpinfo();' > /app/public/index.php
|
|
|
|
|
2022-10-19 05:40:31 +00:00
|
|
|
COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp
|
|
|
|
COPY --from=builder /etc/Caddyfile /etc/Caddyfile
|
|
|
|
|
2023-03-05 14:47:20 +00:00
|
|
|
COPY --from=php-base /usr/local/include/php/ /usr/local/include/php
|
|
|
|
COPY --from=php-base /usr/local/lib/libphp.* /usr/local/lib
|
|
|
|
COPY --from=php-base /usr/local/lib/php/ /usr/local/lib/php
|
|
|
|
COPY --from=php-base /usr/local/php/ /usr/local/php
|
|
|
|
COPY --from=php-base /usr/local/bin/ /usr/local/bin
|
|
|
|
COPY --from=php-base /usr/src /usr/src
|
|
|
|
|
2022-10-19 05:40:31 +00:00
|
|
|
RUN sed -i 's/php/frankenphp run/g' /usr/local/bin/docker-php-entrypoint
|
|
|
|
|
|
|
|
CMD [ "--config", "/etc/Caddyfile" ]
|