Introducció

Les variables d'entorn són una manera poderosa de configurar aplicacions sense haver de modificar el codi font. En Docker Compose, les variables d'entorn es poden utilitzar per definir configuracions que poden variar entre diferents entorns (per exemple, desenvolupament, proves, producció). Aquest mòdul t'ensenyarà com utilitzar variables d'entorn en els teus fitxers docker-compose.yml.

Conceptes Clau

  1. Variables d'entorn en el fitxer docker-compose.yml: Com definir variables directament en el fitxer.
  2. Fitxers .env: Com utilitzar fitxers d'entorn per carregar variables.
  3. Passar variables d'entorn des del sistema host: Com passar variables d'entorn des del sistema operatiu host al contenidor.

Definint Variables d'Entorn en el Fitxer docker-compose.yml

Pots definir variables d'entorn directament en el fitxer docker-compose.yml utilitzant la clau environment. Aquí tens un exemple:

version: '3.8'

services:
  web:
    image: nginx
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

Explicació del Codi

  • version: '3.8': Especifica la versió de Docker Compose.
  • services: Defineix els serveis que es desplegaran.
  • web: Nom del servei.
  • image: nginx: Utilitza la imatge nginx.
  • environment: Defineix les variables d'entorn NGINX_HOST i NGINX_PORT.

Utilitzant Fitxers .env

Els fitxers .env són una manera convenient de gestionar variables d'entorn. Pots crear un fitxer .env al mateix directori que el teu fitxer docker-compose.yml i definir les variables d'entorn allà.

Exemple de Fitxer .env

NGINX_HOST=localhost
NGINX_PORT=80

Exemple de Fitxer docker-compose.yml Utilitzant .env

version: '3.8'

services:
  web:
    image: nginx
    environment:
      - NGINX_HOST
      - NGINX_PORT

Explicació del Codi

  • Les variables NGINX_HOST i NGINX_PORT es carregaran automàticament des del fitxer .env.

Passar Variables d'Entorn des del Sistema Host

També pots passar variables d'entorn des del sistema operatiu host al contenidor. Això és útil quan vols que les variables d'entorn siguin dinàmiques.

Exemple

export NGINX_HOST=localhost
export NGINX_PORT=80
docker-compose up

Exemple de Fitxer docker-compose.yml

version: '3.8'

services:
  web:
    image: nginx
    environment:
      - NGINX_HOST=${NGINX_HOST}
      - NGINX_PORT=${NGINX_PORT}

Explicació del Codi

  • Les variables NGINX_HOST i NGINX_PORT es substitueixen pels valors definits en el sistema host.

Exercicis Pràctics

Exercici 1: Definir Variables d'Entorn en el Fitxer docker-compose.yml

  1. Crea un fitxer docker-compose.yml que defineixi un servei web utilitzant la imatge nginx.
  2. Defineix les variables d'entorn NGINX_HOST i NGINX_PORT directament en el fitxer docker-compose.yml.

Solució

version: '3.8'

services:
  web:
    image: nginx
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

Exercici 2: Utilitzar un Fitxer .env

  1. Crea un fitxer .env amb les variables NGINX_HOST i NGINX_PORT.
  2. Modifica el fitxer docker-compose.yml per utilitzar aquestes variables.

Solució

Fitxer .env

NGINX_HOST=localhost
NGINX_PORT=80

Fitxer docker-compose.yml

version: '3.8'

services:
  web:
    image: nginx
    environment:
      - NGINX_HOST
      - NGINX_PORT

Exercici 3: Passar Variables d'Entorn des del Sistema Host

  1. Defineix les variables d'entorn NGINX_HOST i NGINX_PORT en el sistema host.
  2. Modifica el fitxer docker-compose.yml per utilitzar aquestes variables.

Solució

Comandes del Sistema Host

export NGINX_HOST=localhost
export NGINX_PORT=80
docker-compose up

Fitxer docker-compose.yml

version: '3.8'

services:
  web:
    image: nginx
    environment:
      - NGINX_HOST=${NGINX_HOST}
      - NGINX_PORT=${NGINX_PORT}

Conclusió

Les variables d'entorn són una eina essencial per configurar aplicacions de manera flexible i segura. En aquest mòdul, has après com definir variables d'entorn directament en el fitxer docker-compose.yml, com utilitzar fitxers .env i com passar variables d'entorn des del sistema host. Aquestes tècniques et permetran gestionar configuracions de manera més eficient i adaptable a diferents entorns.

© Copyright 2024. Tots els drets reservats