Dockerfile exemples - pifou25/docker-jeedom GitHub Wiki
Composer
Image pour composer sur PHP cli debian (workaround sur le bug présent avec alpine)
# PHP version required for bookworm is 8 minimum
ARG PHP=7.3
FROM php:${PHP}-cli as composer
# Latest release
COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
RUN apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -q -y \
wget \
zip unzip
WORKDIR /app
VOLUME /app
usage:
- construire des images avec les versions PHP souhaitées:
docker build --build-arg PHP=7.3 -t composer:7.3 .
docker build --build-arg PHP=8.2 -t composer:8.2 .
- supprimer l'installation précédente
rm -rf vendor/ composer.lock
- installer les dépendances ( upgrade + install) par exemple avec composer sous php7.3:
docker run --rm -v $PWD:/app -w /app composer:7.3 composer update
symfony
Together with symfony, add composer, some pdo & mysql extension for php, and git & zip packages
FROM php
RUN apt-get -y update && apt-get -y install git unzip
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN docker-php-ext-install pdo pdo_mysql && docker-php-ext-enable pdo_mysql
RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony5/bin/symfony /usr/local/bin/symfony
WORKDIR /app
VOLUME /app
RUN composer require dodo-it/entity-generator
Next, build the image / run the container:
docker build -t entity-generator .
docker run --rm -v $PWD/entities:/app/entities --network jeedom_network -e MYSQL_HOSTNAME=db -e MYSQL_DATABASE=jeedom -e MYSQL_USERNAME=jeedom -e MYSQL_PASSWORD=jeedom entity-generator
This will connect to the database on db
hostname, (login/pwd = jeedom/jeedom) and generate all database entities.
Python
Image pour installer des dépendances (fichier requirements.txt) puis le script python
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./example.py" ]
2e étape: build image et run :
$ docker build -t wideq-app .
$ docker run -it --rm --name wideq-app -v $PWD:/usr/src/app wideq-app
PHP + XDebug
Ajouter l'extension XDebug qui va bien dans le Dockerfile. Tester xdebug-3.0.4 et redis-5.3.4
RUN pecl install redis-5.1.1 \
&& pecl install xdebug-2.8.1 \
&& docker-php-ext-enable redis xdebug
@see https://matthewsetter.com/setup-step-debugging-php-xdebug3-docker/
https://davescripts.com/debugging-php-code-with-vscode-and-xdebug-on-a-docker-container
Voir l'extention pour Chrome Xdebug Helper ...
Supervisor
Le superviseur
permet de lancer et gérer à son tour plusieurs processus
- apache - serveur HTTP & PHP
- mysql - base de données
- cron - plannificateur des tâches
- atd - idem cron
- fail2ban - sécurité (utilisé dans un container docker discutable)
- un script d'initialisation
Supervisor peut s'installer par shell (apt install supervisor
= 3.3.5 avec debian:10 mais 4.2.2 avec debian:11) ou python (pip3 install supervisor
= 4.2.4 avec python3). Les fichiers de conf sont dans /etc/supervisor/conf.d
par défaut.