12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- # syntax=docker/dockerfile:1
- #checkov:skip=CKV_DOCKER_2
- #checkov:skip=CKV_DOCKER_3
- FROM golang:1.22-alpine
- ENV CFLAGS="-ggdb3"
- ENV PHPIZE_DEPS="\
- autoconf \
- dpkg-dev \
- file \
- g++ \
- gcc \
- libc-dev \
- make \
- pkgconfig \
- re2c"
- SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
- RUN apk add --no-cache \
- $PHPIZE_DEPS \
- argon2-dev \
- brotli-dev \
- curl-dev \
- oniguruma-dev \
- readline-dev \
- libsodium-dev \
- sqlite-dev \
- openssl-dev \
- libxml2-dev \
- zlib-dev \
- bison \
- nss-tools \
- # file watcher
- libstdc++ \
- linux-headers \
- # Dev tools \
- git \
- clang \
- cmake \
- llvm \
- gdb \
- valgrind \
- neovim \
- zsh \
- libtool && \
- echo 'set auto-load safe-path /' > /root/.gdbinit
- WORKDIR /usr/local/src/php
- RUN git clone --branch=PHP-8.4 https://github.com/php/php-src.git . && \
- # --enable-embed is only necessary to generate libphp.so, we don't use this SAPI directly
- ./buildconf --force && \
- ./configure \
- --enable-embed \
- --enable-zts \
- --disable-zend-signals \
- --enable-zend-max-execution-timers \
- --enable-debug && \
- make -j"$(nproc)" && \
- make install && \
- ldconfig /etc/ld.so.conf.d && \
- cp php.ini-development /usr/local/lib/php.ini && \
- echo "zend_extension=opcache.so" >> /usr/local/lib/php.ini && \
- echo "opcache.enable=1" >> /usr/local/lib/php.ini && \
- php --version
- # Install e-dant/watcher (necessary for file watching)
- ARG EDANT_WATCHER_VERSION=release
- WORKDIR /usr/local/src/watcher
- RUN git clone --branch=$EDANT_WATCHER_VERSION https://github.com/e-dant/watcher . && \
- cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && \
- cmake --build build/ && \
- cmake --install build
- WORKDIR /go/src/app
- COPY . .
- WORKDIR /go/src/app/caddy/frankenphp
- RUN go build
- WORKDIR /go/src/app
- CMD [ "zsh" ]
|