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.yml
Un 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ó.servei1
iservei2
: 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./html
al directori/usr/share/nginx/html
dins 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_data
al directori/var/lib/mysql
dins 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
web
que utilitzi la imatgenginx:latest
. - Un servei
db
que utilitzi la imatgemysql:5.7
. - El servei
web
ha de mapejar el port 80 de l'host al port 80 del contenidor. - El servei
db
ha de tenir una variable d'entornMYSQL_ROOT_PASSWORD
amb el valorexample
. - El servei
db
ha de mapejar un volumdb_data
al directori/var/lib/mysql
dins 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