Files
AlexBa16 d36bce3e86 init
2026-06-11 21:44:19 +02:00

1.9 KiB

Using Alpine Linux Instead of Debian

By default, Symfony Docker uses Debian-based FrankenPHP Docker images. This is the recommended solution.

Alternatively, it's possible to use Alpine-based images, which are smaller but are known to be slower, and have several known issues.

To switch to Alpine-based images, apply the following changes to the Dockerfile:

-FROM dunglas/frankenphp:1-php8.5 AS frankenphp_upstream
+FROM dunglas/frankenphp:1-php8.5-alpine AS frankenphp_upstream

-SHELL ["/bin/bash", "-euxo", "pipefail", "-c"]
+SHELL ["/bin/ash", "-euxo", "-c"]

-# hadolint ignore=DL3008
-RUN <<-EOF
-	apt-get update
-	apt-get install -y --no-install-recommends \
-		file \
-		git
+# hadolint ignore=DL3018
+RUN <<-EOF
+	apk add --no-cache \
+		file \
+		git
 	install-php-extensions \

-# hadolint ignore=DL3008,SC3054,DL4006
-RUN <<-'EOF'
-	apt-get update
-	apt-get install -y --no-install-recommends libtree
+# hadolint ignore=DL3018,SC3054,DL4006
+RUN <<-'EOF'
+	apk add --no-cache libtree
 	mkdir -p /tmp/libs
-	BINARIES=(frankenphp php file)
-	for target in $(printf '%s\n' "${BINARIES[@]}" | xargs -I{} which {}) \
+	BINARIES="frankenphp php file"
+	for target in $(printf '%s\n' $BINARIES | xargs -I{} which {}) \

-		libtree -pv "$target" 2>/dev/null | grep -oP '(?:── )\K/\S+(?= \[)' | while IFS= read -r lib; do
+		libtree -pv "$target" 2>/dev/null | sed -n 's/.*── \(\/[^ ]*\) \[.*/\1/p' | while IFS= read -r lib; do

-	rm -rf /var/lib/apt/lists/*

-FROM debian:13-slim AS frankenphp_prod
+FROM alpine:3 AS frankenphp_prod

-SHELL ["/bin/bash", "-euxo", "pipefail", "-c"]
+SHELL ["/bin/ash", "-euxo", "-c"]

-COPY --from=frankenphp_prod_builder /usr/lib/file/magic.mgc /usr/lib/file/magic.mgc
+COPY --from=frankenphp_prod_builder /usr/share/misc/magic.mgc /usr/share/misc/magic.mgc