generale
Nomenclatura container
il nome dovrebbe essere univoco, in modo da essere immediatamente identificabile, meglio mettere il nome del progetto, l'ambiente (dev, coll, prod, prelive, ecc)
preferibilmente: <nometeam>-<nomeprogetto>-<nomeservizio>-<ambiente>
esempio
web-app:
image: gitlab-registry.eagleprojects.cloud/python/rpa/rpa-1942_webapp_hr:latest-dev
restart: unless-stopped
container_name: rpa-hr-web-app-dev <-- OK!
ports:
- '24406:8000'
volumes:
- ./shared-data:/app/downloads
env_file:
- .env
depends_on:
- redis
- db
environment:
- "TZ=Europe/Rome"
labels:
- 'com.centurylinklabs.watchtower.enable=true'
- "cloud.eagleprojects.autocd.enable=true"
web-app:
image: gitlab-registry.eagleprojects.cloud/python/rpa/rpa-1942_webapp_hr:latest-dev
restart: unless-stopped
container_name: web-app <-- NON OK!
ports:
- '24406:8000'
volumes:
- ./shared-data:/app/downloads
env_file:
- .env
depends_on:
- redis
- db
environment:
- "TZ=Europe/Rome"
labels:
- 'com.centurylinklabs.watchtower.enable=true'
- "cloud.eagleprojects.autocd.enable=true"
Porte
sarebbe bene utilizzare porte espste sull'host (quindi ports, non expose) superiori alla 23000 e inferiori alla 65000 incluse
esempio
web-app:
image: gitlab-registry.eagleprojects.cloud/python/rpa/rpa-1942_webapp_hr:latest-dev
restart: unless-stopped
container_name: hr-web-app-dev
ports: <--
- '24406:8000' <-- OK!
volumes:
- ./shared-data:/app/downloads
env_file:
- .env
depends_on:
- redis
- db
environment:
- "TZ=Europe/Rome"
labels:
- 'com.centurylinklabs.watchtower.enable=true'
Timezone
È importante mettere anche la timezone come environment, come negli esempi sopra
Healthcheck
dove possibile aggiungere un healthcheck
healthcheck:
test: ["CMD-SHELL", "curl localhost:8080"]
interval: "10s"
timeout: "30s"
retries: 5
start_period: "20s"
Password
le password dove possibile devono essere più lunghe di 16 caratteri, al fine di evitare incompatibilità con alcuni sistemi sarebbe bene usare solo numeri e lettere, quindi meglio evitare simboli, se proprio è indispensabile usare simboli comunque evitare categoricamente i caratteri: # @ ! & ; / > < % *
Env
Per quanto riguarda i nomi dei file di env, la convenzione standard è la seguente.
Se è necessario un solo file di env si dovrà chiamare .env.
Nel caso di più file (per esempio per fornire l credenziali d'accesso al DB al solo BE), allora i file si chiameranno
o
.env-be .env-fe .env-db ecc
o
.env-<servizio> es: .env-postgres_16 .env-redis_lts
La prima nomencalatura è preferibile. a prescindere i file di env dovranno trovarsi nello stesso livello del docker-compose.
├── depa-fe-asset
│ ├── config.conf
│ └── img
│ └── test.png
├── docker-compose.yaml <--------
├── env-be <--------
└── env-fe <--------