Skip to main content

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                <--------