SIGN IN SIGN UP
2023-01-14 10:14:57 +02:00
# syntax=docker/dockerfile:1
2024-08-04 14:05:54 +02:00
#checkov:skip=CKV_DOCKER_2
#checkov:skip=CKV_DOCKER_3
#checkov:skip=CKV_DOCKER_7
2023-09-14 19:07:01 +02:00
FROM php-base AS common
WORKDIR /app
RUN apt-get update && \
apt-get -y --no-install-recommends install \
mailcap \
libcap2-bin \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
2023-09-14 19:07:01 +02:00
RUN set -eux; \
mkdir -p \
/app/public \
/config/caddy \
/data/caddy \
/etc/caddy \
ci: build .rpm and .deb packages (#1497) * add ./create-rpm.sh file to build a "frankenphp" rpm package * also build a deb package * renamed to build-packages * linter... * add depends * linter again? * linter number 3 * linter number 4 * set default locations for ini file, conf files and extensions * set unified path for modules that should be ok on all dists * add default content into "package" folder * make file executable * worker is in public folder * what on earth did I do x) * use same FRANKENPHP_VERSION and make sure to let pr's run the rpm generation too (version 0.0.0) to see issues * install ruby, fpm and rpm-build * move to after changing base urls because it would fail with packages not found * ruby 3 build needs gcc 10 * rpm-build is necessary too... * and I forgot to link the package folder * create directories if they don't exist * copy out all frankenphp* files? * lint fix * only copy frankenphp-* files * only copy frankenphp-* files * the .deb file is name frankenphp_1.5.0... - create output folder instead and upload all things inside that will simplify things when later adding xdebug.so and ffi.so * update the last two steps to use the gh-output directory * add post install script to set frankenphp able to bind to port 80 for non-root users * dnf over yum, I think the yum alias was removed in RH 9.5 * newlines * newlines * add text what missing libcap means * copy php.ini-production from php-src, linter, update ruby version * move Caddyfile to /etc/frankenphp/Caddyfile * linter * fix a copy and paste error * better describe fallback to 0.0.0 * linter * copy installation scripts from official caddy packages, change user to frankenphp too * bombombom * make files executable * tabs * linter * linter again * use empty directory for three different destinations instead of keeping three empty local directories * caddy says the file is incorrectly formatted without these spaces * remove wildcard matcher from root directive * Apply suggestions from code review commit suggested changes to preinstall/postinstall scripts Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * remove misleading comment * update documentation for paths * update documentation for paths some more * fix musl opcache-jit issue * markdown linter * the damn tab * Apply suggestions from code review Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * drop dev.Dockerfile php location from config.md * add php config note to CONTRIBUTING.md * dashes instead of asterisks in chinese docs * fix package building * create frankenphp user in case it doesn't exist for deb packages * create users if they don't exist, delete them again if they didn't exist * satisfy linter * create the user with the same commands as the postinst/preinstall scripts * Removes toolchain requirements. * trigger * Removes explicit calls to go get * trigger * setcap by default * simplify example project * bring page more in line with the caddy / apache / nginx default page * update to html 5 * oopsies * revert style to original * remove https:// (caddy uses http:// on RHEL, :80 on Debian) --------- Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-05-14 12:33:05 +07:00
/etc/frankenphp; \
2023-09-14 19:07:01 +02:00
sed -i 's/php/frankenphp run/g' /usr/local/bin/docker-php-entrypoint; \
echo '<?php phpinfo();' > /app/public/index.php
COPY --link caddy/frankenphp/Caddyfile /etc/caddy/Caddyfile
RUN ln /etc/caddy/Caddyfile /etc/frankenphp/Caddyfile && \
curl -sSLf \
-o /usr/local/bin/install-php-extensions \
https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions && \
chmod +x /usr/local/bin/install-php-extensions
2023-09-14 19:07:01 +02:00
ci: build .rpm and .deb packages (#1497) * add ./create-rpm.sh file to build a "frankenphp" rpm package * also build a deb package * renamed to build-packages * linter... * add depends * linter again? * linter number 3 * linter number 4 * set default locations for ini file, conf files and extensions * set unified path for modules that should be ok on all dists * add default content into "package" folder * make file executable * worker is in public folder * what on earth did I do x) * use same FRANKENPHP_VERSION and make sure to let pr's run the rpm generation too (version 0.0.0) to see issues * install ruby, fpm and rpm-build * move to after changing base urls because it would fail with packages not found * ruby 3 build needs gcc 10 * rpm-build is necessary too... * and I forgot to link the package folder * create directories if they don't exist * copy out all frankenphp* files? * lint fix * only copy frankenphp-* files * only copy frankenphp-* files * the .deb file is name frankenphp_1.5.0... - create output folder instead and upload all things inside that will simplify things when later adding xdebug.so and ffi.so * update the last two steps to use the gh-output directory * add post install script to set frankenphp able to bind to port 80 for non-root users * dnf over yum, I think the yum alias was removed in RH 9.5 * newlines * newlines * add text what missing libcap means * copy php.ini-production from php-src, linter, update ruby version * move Caddyfile to /etc/frankenphp/Caddyfile * linter * fix a copy and paste error * better describe fallback to 0.0.0 * linter * copy installation scripts from official caddy packages, change user to frankenphp too * bombombom * make files executable * tabs * linter * linter again * use empty directory for three different destinations instead of keeping three empty local directories * caddy says the file is incorrectly formatted without these spaces * remove wildcard matcher from root directive * Apply suggestions from code review commit suggested changes to preinstall/postinstall scripts Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * remove misleading comment * update documentation for paths * update documentation for paths some more * fix musl opcache-jit issue * markdown linter * the damn tab * Apply suggestions from code review Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * drop dev.Dockerfile php location from config.md * add php config note to CONTRIBUTING.md * dashes instead of asterisks in chinese docs * fix package building * create frankenphp user in case it doesn't exist for deb packages * create users if they don't exist, delete them again if they didn't exist * satisfy linter * create the user with the same commands as the postinst/preinstall scripts * Removes toolchain requirements. * trigger * Removes explicit calls to go get * trigger * setcap by default * simplify example project * bring page more in line with the caddy / apache / nginx default page * update to html 5 * oopsies * revert style to original * remove https:// (caddy uses http:// on RHEL, :80 on Debian) --------- Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-05-14 12:33:05 +07:00
CMD ["--config", "/etc/frankenphp/Caddyfile", "--adapter", "caddyfile"]
2023-10-26 23:03:56 +02:00
HEALTHCHECK CMD curl -f http://localhost:2019/metrics || exit 1
2023-09-14 19:07:01 +02:00
# See https://caddyserver.com/docs/conventions#file-locations for details
2024-07-05 11:09:09 +02:00
ENV XDG_CONFIG_HOME=/config
ENV XDG_DATA_HOME=/data
2023-09-14 19:07:01 +02:00
EXPOSE 80
EXPOSE 443
EXPOSE 443/udp
EXPOSE 2019
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
2023-09-14 19:07:01 +02:00
LABEL org.opencontainers.image.licenses=MIT
LABEL org.opencontainers.image.vendor="Kévin Dunglas"
FROM common AS builder
ARG FRANKENPHP_VERSION='dev'
2023-12-01 17:26:21 +01:00
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
COPY --from=golang-base /usr/local/go /usr/local/go
2024-07-05 11:09:09 +02:00
ENV PATH=/usr/local/go/bin:$PATH
2025-05-11 22:30:19 +02:00
ENV GOTOOLCHAIN=local
2023-08-23 11:33:45 +02:00
# This is required to link the FrankenPHP binary to the PHP binary
RUN apt-get update && \
apt-get -y --no-install-recommends install \
cmake \
git \
libargon2-dev \
libbrotli-dev \
libcurl4-openssl-dev \
libonig-dev \
libreadline-dev \
libsodium-dev \
libsqlite3-dev \
libssl-dev \
libxml2-dev \
zlib1g-dev \
&& \
apt-get clean
# Install e-dant/watcher (necessary for file watching)
feat: restart workers when on source changes (#1013) * Adds filesystem watcher with tests. * Refactoring. * Formatting. * Formatting. * Switches to absolute path in tests. * Fixes race condition from merge conflict. * Fixes race condition. * Fixes tests. * Fixes markdown lint errors. * Switches back to absolute paths. * Reverts back to relative file paths. * Fixes golangci-lint issues. * Uses github.com/dunglas/go-fswatch instead. * Stops watcher before stopping workers. * Updates docs. * Avoids segfault in tests. * Fixes watcher segmentation violations on shutdown. * Adjusts watcher latencies and tests. * Adds fswatch to dockerfiles * Fixes fswatch in alpine. * Fixes segfault (this time for real). * Allows queueing new reload if file changes while workers are reloading. * Makes tests more consistent. * Prevents the watcher from getting stuck if there is an error in the worker file itself. * Reverts changing the image. * Puts fswatch version into docker-bake.hcl. * Asserts instead of panicking. * Adds notice Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev-alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev-alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update docs/config.md Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Runs fswatch version. * Removes .json. * Replaces ms with s. * Resets the channel after closing it. * Update watcher_options.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Asserts no error instead. * Fixes a race condition where events are fired after frankenphp has stopped. * Updates docs. * Update watcher_options_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Allows queuing events while watchers are reloading. * go fmt * Refactors stopping and draining logic. * Allows extended watcher configuration with dirs, recursion, symlinks, case-sensitivity, latency, monitor types and regex. * Updates docs. * Adds TODOS. * go fmt. * Fixes linting errors. * Also allows wildcards in the longform and adjusts docs. * Adds debug log. * Fixes the watcher short form. * Refactors sessions and options into a struct. * Fixes an overflow in the 'workersReadyWG' on unexpected terminations. * Properly logs errors coming from session.Start(). * go fmt. * Adds --nocache. * Fixes lint issue. * Refactors and resolves race condition on worker reload. * Implements debouncing with a timer as suggested by @withinboredom. * Starts watcher even if no workers are defined. * Updates docs with file limit warning. * Adds watch config unit tests. * Adjusts debounce timings. * go fmt. * Adds fswatch to static builder (test). * Adds a short grace period between stopping and destroying the watcher sessions. * Adds caddy test. * Adjusts sleep time. * Swap to edant/watcher. * Fixes watch options and tests. * go fmt. * Adds TODO. * Installs edant/watcher in the bookworm image. * Fixes linting. * Refactors the watcher into its own module. * Adjusts naming. * ADocker image adjustments and refactoring. * Testing installation methods. * Installs via gcc instead. * Fixes pointer formats. * Fixes lint issues. * Fixes arm alpine and updates docs. * Clang format. * Fixes dirs. * Adds watcher version arg. * Uses static lib version. * Adds watcher to tests and sanitizers. * Uses sudo for copying the shared lib. * Removes unnused func. * Refactoring. * Update .github/workflows/sanitizers.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Adds fpic. * Fixes linting. * Skips tests in msan. * Resets op_cache in every worker thread after termination * Review fixes part 1. * Test: installing libstc++ instead of gcc. * Test: using msan ignorelist. * Test: using msan ignorelist. * Test: using msan ignorelist. * Allows '/**/' for global recursion and '**/' for relative recursion. * Reverts using the ignorelist. * Calls opcache directly. * Adds --watch to php-server command * Properly free CStrings. * Sorts alphabetically and uses curl instead of git. * Labeling and formatting. * Update .github/workflows/sanitizers.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update .github/workflows/sanitizers.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update .github/workflows/tests.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update .github/workflows/tests.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update caddy/caddy.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update docs/config.md Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update frankenphp_with_watcher_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher.h Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update frankenphp.c Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update docs/config.md Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update frankenphp_with_watcher_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update testdata/files/.gitignore Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher-c.h Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher.c Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Fixes test and Dockerfile. * Fixes Dockerfiles. * Resets go versions. * Replaces unsafe.pointer with uintptr_t * Prevents worker channels from being destroyed on reload. * Minimizes the public api by only passing a []string. * Adds support for directory patterns and multiple '**' globs. * Adjusts label. * go fmt. * go mod tidy. * Fixes merge conflict. * Refactoring and formatting. * Cleans up unused vars and functions. * Allows dirs with a dot. * Makes test nicer. * Add dir tests. * Moves the watch directive inside the worker directive. * Adds debug log on special events. * Removes line about symlinks. * Hints at multiple possible --watch flags. * Adds ./**/*.php as default watch configuration. * Changes error to a warning. * Changes the default to './**/*.{php,yaml,yml,twig,env}' and supports the {bracket} pattern. * Fixes linting. * Fixes merge conflict and adjust values. * Adjusts values. --------- Co-authored-by: a.stecher <a.stecher@sportradar.com> Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2024-10-07 13:17:24 +02:00
WORKDIR /usr/local/src/watcher
RUN --mount=type=secret,id=github-token \
if [ -f /run/secrets/github-token ] && [ -s /run/secrets/github-token ]; then \
curl -s -H "Authorization: Bearer $(cat /run/secrets/github-token)" https://api.github.com/repos/e-dant/watcher/releases/latest; \
else \
curl -s https://api.github.com/repos/e-dant/watcher/releases/latest; \
fi | \
grep tarball_url | \
awk '{ print $2 }' | \
sed 's/,$//' | \
sed 's/"//g' | \
xargs curl -L | \
tar xz --strip-components 1 && \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && \
cmake --build build && \
cmake --install build && \
ldconfig
WORKDIR /go/src/app
COPY --link go.mod go.sum ./
RUN go mod download
WORKDIR /go/src/app/caddy
COPY --link caddy/go.mod caddy/go.sum ./
RUN go mod download
WORKDIR /go/src/app
COPY --link . ./
# See https://github.com/docker-library/php/blob/master/8.3/bookworm/zts/Dockerfile#L57-L59 for PHP values
ENV CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS"
ENV CGO_CPPFLAGS=$PHP_CPPFLAGS
ENV CGO_LDFLAGS="-L/usr/local/lib -lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS"
2023-12-01 17:26:21 +01:00
WORKDIR /go/src/app/caddy/frankenphp
2025-07-16 15:36:16 +02:00
RUN GOBIN=/usr/local/bin \
../../go.sh install -ldflags "-w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" -buildvcs=true && \
setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
ci: build .rpm and .deb packages (#1497) * add ./create-rpm.sh file to build a "frankenphp" rpm package * also build a deb package * renamed to build-packages * linter... * add depends * linter again? * linter number 3 * linter number 4 * set default locations for ini file, conf files and extensions * set unified path for modules that should be ok on all dists * add default content into "package" folder * make file executable * worker is in public folder * what on earth did I do x) * use same FRANKENPHP_VERSION and make sure to let pr's run the rpm generation too (version 0.0.0) to see issues * install ruby, fpm and rpm-build * move to after changing base urls because it would fail with packages not found * ruby 3 build needs gcc 10 * rpm-build is necessary too... * and I forgot to link the package folder * create directories if they don't exist * copy out all frankenphp* files? * lint fix * only copy frankenphp-* files * only copy frankenphp-* files * the .deb file is name frankenphp_1.5.0... - create output folder instead and upload all things inside that will simplify things when later adding xdebug.so and ffi.so * update the last two steps to use the gh-output directory * add post install script to set frankenphp able to bind to port 80 for non-root users * dnf over yum, I think the yum alias was removed in RH 9.5 * newlines * newlines * add text what missing libcap means * copy php.ini-production from php-src, linter, update ruby version * move Caddyfile to /etc/frankenphp/Caddyfile * linter * fix a copy and paste error * better describe fallback to 0.0.0 * linter * copy installation scripts from official caddy packages, change user to frankenphp too * bombombom * make files executable * tabs * linter * linter again * use empty directory for three different destinations instead of keeping three empty local directories * caddy says the file is incorrectly formatted without these spaces * remove wildcard matcher from root directive * Apply suggestions from code review commit suggested changes to preinstall/postinstall scripts Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * remove misleading comment * update documentation for paths * update documentation for paths some more * fix musl opcache-jit issue * markdown linter * the damn tab * Apply suggestions from code review Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * drop dev.Dockerfile php location from config.md * add php config note to CONTRIBUTING.md * dashes instead of asterisks in chinese docs * fix package building * create frankenphp user in case it doesn't exist for deb packages * create users if they don't exist, delete them again if they didn't exist * satisfy linter * create the user with the same commands as the postinst/preinstall scripts * Removes toolchain requirements. * trigger * Removes explicit calls to go get * trigger * setcap by default * simplify example project * bring page more in line with the caddy / apache / nginx default page * update to html 5 * oopsies * revert style to original * remove https:// (caddy uses http:// on RHEL, :80 on Debian) --------- Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> Co-authored-by: Alliballibaba <alliballibaba@gmail.com>
2025-05-14 12:33:05 +07:00
cp Caddyfile /etc/frankenphp/Caddyfile && \
frankenphp version && \
frankenphp build-info
2023-12-01 17:26:21 +01:00
WORKDIR /go/src/app
2023-09-14 19:07:01 +02:00
FROM common AS runner
ENV GODEBUG=cgocheck=0
feat: restart workers when on source changes (#1013) * Adds filesystem watcher with tests. * Refactoring. * Formatting. * Formatting. * Switches to absolute path in tests. * Fixes race condition from merge conflict. * Fixes race condition. * Fixes tests. * Fixes markdown lint errors. * Switches back to absolute paths. * Reverts back to relative file paths. * Fixes golangci-lint issues. * Uses github.com/dunglas/go-fswatch instead. * Stops watcher before stopping workers. * Updates docs. * Avoids segfault in tests. * Fixes watcher segmentation violations on shutdown. * Adjusts watcher latencies and tests. * Adds fswatch to dockerfiles * Fixes fswatch in alpine. * Fixes segfault (this time for real). * Allows queueing new reload if file changes while workers are reloading. * Makes tests more consistent. * Prevents the watcher from getting stuck if there is an error in the worker file itself. * Reverts changing the image. * Puts fswatch version into docker-bake.hcl. * Asserts instead of panicking. * Adds notice Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev-alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev-alpine.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update dev.Dockerfile Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update docs/config.md Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Runs fswatch version. * Removes .json. * Replaces ms with s. * Resets the channel after closing it. * Update watcher_options.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Asserts no error instead. * Fixes a race condition where events are fired after frankenphp has stopped. * Updates docs. * Update watcher_options_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Allows queuing events while watchers are reloading. * go fmt * Refactors stopping and draining logic. * Allows extended watcher configuration with dirs, recursion, symlinks, case-sensitivity, latency, monitor types and regex. * Updates docs. * Adds TODOS. * go fmt. * Fixes linting errors. * Also allows wildcards in the longform and adjusts docs. * Adds debug log. * Fixes the watcher short form. * Refactors sessions and options into a struct. * Fixes an overflow in the 'workersReadyWG' on unexpected terminations. * Properly logs errors coming from session.Start(). * go fmt. * Adds --nocache. * Fixes lint issue. * Refactors and resolves race condition on worker reload. * Implements debouncing with a timer as suggested by @withinboredom. * Starts watcher even if no workers are defined. * Updates docs with file limit warning. * Adds watch config unit tests. * Adjusts debounce timings. * go fmt. * Adds fswatch to static builder (test). * Adds a short grace period between stopping and destroying the watcher sessions. * Adds caddy test. * Adjusts sleep time. * Swap to edant/watcher. * Fixes watch options and tests. * go fmt. * Adds TODO. * Installs edant/watcher in the bookworm image. * Fixes linting. * Refactors the watcher into its own module. * Adjusts naming. * ADocker image adjustments and refactoring. * Testing installation methods. * Installs via gcc instead. * Fixes pointer formats. * Fixes lint issues. * Fixes arm alpine and updates docs. * Clang format. * Fixes dirs. * Adds watcher version arg. * Uses static lib version. * Adds watcher to tests and sanitizers. * Uses sudo for copying the shared lib. * Removes unnused func. * Refactoring. * Update .github/workflows/sanitizers.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Adds fpic. * Fixes linting. * Skips tests in msan. * Resets op_cache in every worker thread after termination * Review fixes part 1. * Test: installing libstc++ instead of gcc. * Test: using msan ignorelist. * Test: using msan ignorelist. * Test: using msan ignorelist. * Allows '/**/' for global recursion and '**/' for relative recursion. * Reverts using the ignorelist. * Calls opcache directly. * Adds --watch to php-server command * Properly free CStrings. * Sorts alphabetically and uses curl instead of git. * Labeling and formatting. * Update .github/workflows/sanitizers.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update .github/workflows/sanitizers.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update .github/workflows/tests.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update .github/workflows/tests.yaml Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update caddy/caddy.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update docs/config.md Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update frankenphp_with_watcher_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher.h Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update frankenphp.c Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update docs/config.md Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update frankenphp_with_watcher_test.go Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update testdata/files/.gitignore Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher-c.h Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Update watcher/watcher.c Co-authored-by: Kévin Dunglas <kevin@dunglas.fr> * Fixes test and Dockerfile. * Fixes Dockerfiles. * Resets go versions. * Replaces unsafe.pointer with uintptr_t * Prevents worker channels from being destroyed on reload. * Minimizes the public api by only passing a []string. * Adds support for directory patterns and multiple '**' globs. * Adjusts label. * go fmt. * go mod tidy. * Fixes merge conflict. * Refactoring and formatting. * Cleans up unused vars and functions. * Allows dirs with a dot. * Makes test nicer. * Add dir tests. * Moves the watch directive inside the worker directive. * Adds debug log on special events. * Removes line about symlinks. * Hints at multiple possible --watch flags. * Adds ./**/*.php as default watch configuration. * Changes error to a warning. * Changes the default to './**/*.{php,yaml,yml,twig,env}' and supports the {bracket} pattern. * Fixes linting. * Fixes merge conflict and adjust values. * Adjusts values. --------- Co-authored-by: a.stecher <a.stecher@sportradar.com> Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2024-10-07 13:17:24 +02:00
# copy watcher shared library
COPY --from=builder /usr/local/lib/libwatcher* /usr/local/lib/
# fix for the file watcher on arm
RUN apt-get install -y --no-install-recommends libstdc++6 && \
apt-get clean && \
ldconfig
COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp
2023-09-14 19:07:01 +02:00
RUN setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
frankenphp version && \
frankenphp build-info