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ó.servei1iservei2: 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 imatgenginx: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 imatgemysql:5.7.environment: Defineix la contrasenya de l'usuari root de MySQL.volumes: Mapeja el volumdb_dataal directori/var/lib/mysqldins del contenidor.networks: Assigna el servei a la xarxabackend.
redis: Servei que utilitza la imatgeredis:alpine.networks: Assigna el servei a la xarxabackend.
volumes: Defineix el volumdb_data.networks: Defineix la xarxabackend.
- 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
