PHP-FPM
Introduction
Il est nécessaire d’avoir installé au préalable Docker sur votre Archlinux.
Pour construire une image Docker compatible ARM64 pour le Raspberry PI vous aurez besoin de 5 fichiers:
- build.sh
- platform.sh
- Dockerfile
- fastcgi.conf (à placer dans le dossier files)
- nginx.conf (à placer dans le dossier files)
Fichiers requis
platform.sh
[Fichier]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# Used in Docker build to set platform dependent variables
case $TARGETARCH in
"amd64")
echo "x86_64-unknown-linux-gnu" > /.platform
echo "" > /.compiler
;;
"arm64")
echo "aarch64-unknown-linux-gnu" > /.platform
echo "gcc-aarch64-linux-gnu" > /.compiler
;;
"arm")
echo "armv7-unknown-linux-gnueabihf" > /.platform
echo "gcc-arm-linux-gnueabihf" > /.compiler
;;
esac
build.sh
[Fichier]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
#
# https://hub.docker.com/_/php
# https://github.com/mlocati/docker-php-extension-installer
#
clear
cd "$(dirname "$0")" || exit 1
IMAGE_BASE=zogg/php-fpm
IMAGE_NAME_LATEST=${IMAGE_BASE}:latest
export DOCKER_CLI_EXPERIMENTAL=enabled
docker run --privileged --rm tonistiigi/binfmt --install all
export DOCKER_DEFAULT_PLATFORM=linux/amd64
docker buildx build --pull \
--platform=linux/amd64 \
--output=type=docker \
--build-arg TZ=Europe/Paris \
--build-arg CONCURRENCY=$(nproc) \
-t "${IMAGE_NAME_LATEST}" \
. 2>&1 | tee build.log
exit 0
Dockerfile
[Fichier]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#
# Add additionnal modules
# https://github.com/mlocati/docker-php-extension-installer
#
FROM --platform=linux/amd64 php:8-fpm
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG BUILDPLATFORM
ARG BUILDOS
ARG BUILDARCH
ARG BUILDVARIANT
COPY platform.sh .
RUN ./platform.sh
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions \
apcu \
bcmath \
bz2 \
calendar \
# cmark \
decimal \
ev \
event \
excimer \
exif \
gd \
gearman \
# geoip \
gettext \
# gmagick \
gmp \
http \
igbinary \
imagick \
intl \
ion \
ioncube_loader \
# jsmin \
lzf \
mcrypt \
memcache \
memcached \
opcache \
# recode \
redis \
timezonedb \
xml \
yaml \
zip \
zstd \
curl \
ctype \
dom \
json \
mbstring \
openssl \
session \
simplexml
LABEL author "Olivier Le Bris"
LABEL maintainer "zogg"
LABEL com.centurylinklabs.watchtower.enable=false
LABEL org.opencontainers.image.source "https://zogg.fr"
LABEL org.opencontainers.image.licenses MIT
Procédure
Pour lancer la construction de l’image, il suffit de donner au script shell build.sh les droits d’éxécution puis de le lancer :
1
sudo chmod +x build.sh && sudo bash build.sh
Conclusion
Vous avez maintenant une image Docker compatible AMD64 à lancer sous Docker (ou avec Portainer :p).
Cet article est sous licence CC BY 4.0 par l'auteur.