Dockerfile.alpine 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. FROM php:8.2.0RC6-zts-alpine3.16 AS builder
  2. COPY --from=golang:alpine3.16 /usr/local/go/bin/go /usr/local/bin/go
  3. COPY --from=golang:alpine3.16 /usr/local/go /usr/local/go
  4. RUN apk add --no-cache --virtual .build-deps \
  5. $PHPIZE_DEPS \
  6. argon2-dev \
  7. coreutils \
  8. curl-dev \
  9. gnu-libiconv-dev \
  10. libsodium-dev \
  11. libxml2-dev \
  12. linux-headers \
  13. oniguruma-dev \
  14. openssl-dev \
  15. readline-dev \
  16. sqlite-dev
  17. WORKDIR /go/src/app
  18. COPY go.mod go.sum ./
  19. RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
  20. RUN mkdir caddy && cd caddy
  21. COPY caddy/go.mod caddy/go.sum ./caddy/
  22. RUN cd caddy && go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
  23. COPY *.* ./
  24. COPY caddy caddy
  25. COPY C-Thread-Pool C-Thread-Pool
  26. COPY internal internal
  27. COPY testdata testdata
  28. # todo: automate this?
  29. # see https://github.com/docker-library/php/blob/master/8.2-rc/bullseye/zts/Dockerfile#L57-L59 for php values
  30. ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" CGO_CFLAGS=$PHP_CFLAGS CGO_CPPFLAGS=$PHP_CPPFLAGS
  31. RUN cd caddy/frankenphp && \
  32. go build && \
  33. cp frankenphp /usr/local/bin && \
  34. cp /go/src/app/caddy/frankenphp/Caddyfile /etc/Caddyfile
  35. ENTRYPOINT ["/bin/sh","-c"]
  36. FROM php:8.2.0RC6-zts-alpine3.16 AS final
  37. COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
  38. WORKDIR /app
  39. RUN mkdir -p /app/public
  40. RUN echo '<?php phpinfo();' > /app/public/index.php
  41. COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp
  42. COPY --from=builder /etc/Caddyfile /etc/Caddyfile
  43. RUN sed -i 's/php/frankenphp run/g' /usr/local/bin/docker-php-entrypoint
  44. CMD [ "--config", "/etc/Caddyfile" ]