En aquest tema, aprendrem com definir serveis a Docker Compose. Docker Compose és una eina que permet definir i executar aplicacions multi-contenidor. Utilitzant un fitxer YAML, pots especificar els serveis que componen la teva aplicació, les xarxes i els volums que necessiten.
- Introducció a Docker Compose
Docker Compose utilitza un fitxer YAML per definir els serveis, xarxes i volums necessaris per a una aplicació. Aquest fitxer es coneix com docker-compose.yml. A continuació, veurem com estructurar aquest fitxer per definir serveis.
- Estructura bàsica del fitxer docker-compose.yml
docker-compose.ymlUn fitxer docker-compose.yml típic té la següent estructura:
version: '3'
services:
  servei1:
    image: imatge1
    ports:
      - "80:80"
  servei2:
    image: imatge2
    ports:
      - "8080:80"Explicació del codi:
- version: Especifica la versió del format de fitxer Compose. En aquest exemple, utilitzem la versió 3.
- services: Defineix els serveis que componen l'aplicació.- servei1i- servei2: Són els noms dels serveis. Pots donar-los qualsevol nom que tingui sentit per a la teva aplicació.
- image: Especifica la imatge Docker que s'utilitzarà per al servei.
- ports: Defineix els ports que es mapegen entre el contenidor i la màquina host.
 
- Definint serveis amb més detalls
A més de les imatges i els ports, pots definir altres configuracions per als serveis, com ara volums, variables d'entorn, dependències, etc.
Exemple avançat:
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - backend
  redis:
    image: redis:alpine
    networks:
      - backend
volumes:
  db_data:
networks:
  backend:Explicació del codi:
- web: Servei que utilitza la imatge- nginx:latest.- volumes: Mapeja el directori local- ./htmlal directori- /usr/share/nginx/htmldins del contenidor.
- environment: Defineix variables d'entorn per al servei.
 
- db: Servei que utilitza la imatge- mysql:5.7.- environment: Defineix la contrasenya de l'usuari root de MySQL.
- volumes: Mapeja el volum- db_dataal directori- /var/lib/mysqldins del contenidor.
- networks: Assigna el servei a la xarxa- backend.
 
- redis: Servei que utilitza la imatge- redis:alpine.- networks: Assigna el servei a la xarxa- backend.
 
- volumes: Defineix el volum- db_data.
- networks: Defineix la xarxa- backend.
- Exercici pràctic
Objectiu:
Crear un fitxer docker-compose.yml que defineixi una aplicació web amb un servei de base de dades.
Requisits:
- Un servei webque utilitzi la imatgenginx:latest.
- Un servei dbque utilitzi la imatgemysql:5.7.
- El servei webha de mapejar el port 80 de l'host al port 80 del contenidor.
- El servei dbha de tenir una variable d'entornMYSQL_ROOT_PASSWORDamb el valorexample.
- El servei dbha de mapejar un volumdb_dataal directori/var/lib/mysqldins del contenidor.
Solució:
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:
- Resum
En aquest tema, hem après com definir serveis a Docker Compose utilitzant un fitxer docker-compose.yml. Hem vist com especificar imatges, ports, volums, variables d'entorn i xarxes per als serveis. També hem practicat creant un fitxer docker-compose.yml per a una aplicació web amb un servei de base de dades.
En el següent tema, explorarem les comandes de Docker Compose per gestionar aquests serveis.
Docker: De Principiant a Avançat
Mòdul 1: Introducció a Docker
- Què és Docker?
- Instal·lant Docker
- Arquitectura de Docker
- Comandes bàsiques de Docker
- Entenent les imatges de Docker
- Creant el teu primer contenidor Docker
Mòdul 2: Treballant amb imatges Docker
- Docker Hub i Repositoris
- Construint imatges Docker
- Conceptes bàsics de Dockerfile
- Gestionant imatges Docker
- Etiquetant i pujant imatges
Mòdul 3: Contenidors Docker
- Executant contenidors
- Cicle de vida del contenidor
- Gestionant contenidors
- Xarxes a Docker
- Persistència de dades amb volums
Mòdul 4: Docker Compose
- Introducció a Docker Compose
- Definint serveis a Docker Compose
- Comandes de Docker Compose
- Aplicacions multi-contenidor
- Variables d'entorn a Docker Compose
Mòdul 5: Conceptes avançats de Docker
- Exploració profunda de xarxes Docker
- Opcions d'emmagatzematge de Docker
- Millors pràctiques de seguretat de Docker
- Optimitzant imatges Docker
- Registre i monitoratge de Docker
Mòdul 6: Docker en producció
- CI/CD amb Docker
- Orquestrant contenidors amb Docker Swarm
- Introducció a Kubernetes
- Desplegant contenidors Docker a Kubernetes
- Escalat i equilibrat de càrrega
