Mon docker-compose.yml par défaut
Depuis que j'ai mon serveur, j'utilise docker. Alors oui tu vas me dire c'est pas le top du container. Rassure toi public, au taf c'est du podman ou du kube, mais j'ai mon serveur sous Debian, et mon playbook ansible post install n'a pas été vraiment refait. Un jour je migrerai mon installation en kube, mais c'est un peu surfait pour l'utilisation que j'en ai. Du coup c'est du full docker, et tout fait avec du docker-compose.
Pour m'organiser un peu j'utilise toujours le même modèle de docker-compose.yml. Je vais l'appeler le fichier docker-compose de référence. Et je l'utilise avec son fichier d'environnement, un fichier .env à la racine du docker-compose
$ ls .
-rw-r--r-- 1 sckyzo sckyzo 1174 Feb 26 01:33 .env
-rw-r--r-- 1 sckyzo sckyzo 5392 Jun 28 12:39 docker-compose.yml
Je vous partage simplement cet exemple, si cela peut servir à quelqu'un pourquoi pas :)
version: "3"
############
# NETWORKS #
############
networks:
traefik_proxy:
external: true
network:
driver: bridge
###########
# VOLUMES #
###########
volumes:
volume-data: {}
############
# SERVICES #
############
services:
# APPLICATION #
#=============#
apps:
image:
container_name:
hostname:
restart: unless-stopped
networks:
- traefik_proxy
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- /etc/localtime:/etc/localtime:ro
- volume-data:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:XXXX"]
interval: 30s
timeout: 10s
retries: 3
start_period: 1m
labels:
traefik.enable: true
traefik.docker.network: traefik_proxy
traefik.http.routers.apps.entrypoints: websecure
traefik.http.routers.apps.rule: Host(`XXX.${DOMAINNAME}`)
traefik.http.routers.apps.service: apps
traefik.http.services.apps.loadbalancer.server.port: XXXX
com.centurylinklabs.watchtower.enable: true
Il ne me reste plus qu'a modifier le nom de l'apps, les networks, les volumes, le healthcheck et les labels.
Avec j'ai un fichier .env auquel j'ajoute mes variables plutôt que de les mettre dans mon docker-compose. C'est personnel cette utilisation, mais elle me convient. D'ici quelques temps je migrerai toutes les variables dans du docker-secret ce sera plus simple. Mais en attendant cela fonctionne.
##########################
# DOCKER GENERAL SETTING #
##########################
PUID="1000"
PGID="997"
TZ="Europe/Paris"
USERDIR="/home/user"
DEFAULT_EMAIL="mon@mail.com"
IPADDRESS="XXX.XXX.XXX.XXX"
################################
# DOMAIN NAME AND OTHERS INFOS #
################################
DOMAINNAME="domain.com"