Tu peux éventuellement te faire un Dockerfile
Pour ma part, je trouve que les Dockerfile (sans exception) manque de finition. Ce qui complique la vie des personnes ayant peu ou pas de connaissance sur le sujet. Mais c’est normal, créer une config totalement générique n’est pas forcément évidente. Et surtout, il faut, dans la mesure du possible, avoir toujours un poste de travail « vierge » (avec le minimum de libs, etc) afin de paré à toutes éventualités. Ce qui, en prod n’est pas forcément évident car coûteux.
Tu peux faire un truc du genre :
# Base image
FROM jeedom/jeedom:latest
# Mandatory to avoid encoding issues with jeedom
RUN export LANG=en_US.UTF-8 && \
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
# Mandatory for Jeedom
RUN echo "* * * * * www-data /usr/bin/php /var/www/html/core/php/jeeCron.php >> /dev/null" > /etc/cron.d/jeedom
ENV DEBIAN_FRONTEND noninteractive
# Update system
RUN apt update && \
apt upgrade -y && \
apt install -y apt-utils && \
apt install -y default-mysql-client \
Les librairies que tu veux en plus
# Ports
EXPOSE 80/tcp 443/tcp
#Use this ports for alexa-api (nodeJs)
EXPOSE 3456/tcp 3457/tcp
# Exec
ENTRYPOINT ["docker-entrypoint.sh"] <==== Si tu veux faire un fichier docker-entrypoint.sh pour faire des actrions avant le script d'installation par exemple. Un exemple plus bas
CMD ["/root/init.sh"]
Exemple de docker-entrypoint.sh
#!/bin/bash
figlet Jeedom Gaston -f slant <====== Pas obligatoire, c'est pour faire Joli, mais il faut installer la librairies Figlet, ca permet d'écrire le nom en gros genre Ascii art.
echo "=================================="
echo " Dockerfile version : $DOCKERFILE_VERSION"
echo "================================="
echo ' ==> Start container init' | ts
hostIpAddress=$(curl -s ifconfig.me)
echo " - Hostname : $HOSTNAME"
echo " - IP Address : $(ip address | grep eth0 | grep inet | cut -d " " -f 6)"
echo " - Host IP Address : $hostIpAddress"
# Ici, je m'assure que l'adresse IP de la Bdd soit correctement renseignée
# Dans mon cas, personnel, j'ai commenté car j'utilise un orchestrateur et c'est lui qui se charge de "Load Balancer" la Bdd
#if [ -f /var/www/html/core/config/common.config.php ]; then
# if [ ! -z $JEEDOM_BDD_SVC_SERVICE_HOST ] ; then
# echo "[INFO] Change IP address of the database in case of service ip adress change"
# sed -i -e "s/^.*'host'.*$/ 'host' => '$JEEDOM_BDD_SVC_SERVICE_HOST',/g" #/var/www/html/core/config/common.config.php
# fi
#fi
# Mandatory - Wrong default values (Je ne sais pas si cela a été corrigé dans les nouvelle versions, je testerai d'ailleurs
sed -i -e "s/^max_execution_time = 30$/max_execution_time = 600/g" /etc/php/7.3/apache2/php.ini
sed -i -e "s/^upload_max_filesize = 2M$/upload_max_filesize = 1G/g" /etc/php/7.3/apache2/php.ini
sed -i -e "s/^post_max_size = 8M$/post_max_size = 1G/g" /etc/php/7.3/apache2/php.ini
# Apache configuration
#echo
#echo >> /etc/apache2/apache2.conf
#echo "# Set ServerName" >> /etc/apache2/apache2.conf
#echo "ServerName $HOSTNAME" >> /etc/apache2/apache2.conf
chown www-data:www-data /var/lib/php/sessions
# Update plugins dependencies.
# Pour ma part, j'installe les dépendances avant le lancement du conteneur.
# En effet, lorsque le conteneur meurt, a moins de sauvegarder l'ensemble des librairies installées
# (en gros, mettre l'OS dans un volumes), les librairies ne seront plus là au démarrage. Donc il faut les réinstaller. Il ne faut pas oublier que
# UN CONTENEUR C'EST DU CONSOMMABLE. CE N'EST PAS FAIT POUR ETRE
# TOTALEMENT SAUVEGARDÉ. ON PRÉPARE UNE IMAGE DE BASE
# PUIS ON PROVISIONNE (genre avec Chef, Puppet, Ansible, Script, Prometheus) CE QUE LE SOUHAITE INSTALLER/CONFIGURER/LANCER
# De plus, Si on veux installer certbot, c'est pareil.
# Pour ma part, je ne l'utilise par car j'ai un Reverse Proxy/ Load Balancer qui s'occupe du HTTPS en auto (Traefik). Plus simple et renouvellement automatique du certificat
#if [ ! -f .dependencies_installed ] ; then
bash /usr/bin/updateDependencies.sh
# sed -i "/supervisord/d" root/init.sh
# echo "certbot install -n --apache --cert-name ${DOMAIN_NAME}" >> /root/init.sh
# echo "" >> /root/init.sh
# echo "/usr/bin/supervisord" >> /root/init.sh
#fi
echo ' ==> Container Init finished' | ts
echo
echo
"$@" <======== OBLIGATOIRE
en espérant que cela pourra aider