Post

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.

© 2022- Olivier. Certains droits réservés.

Propulsé par τζ avec le thème Χ