Junior
Wat is je ervaring met Docker Compose?
sobes.tech AI
Antwoord van AI
Ik gebruik Docker Compose om multi-container applicaties te definiëren en uit te voeren. Mijn ervaring omvat:
- Ontwikkeling van een lokale omgeving: Het maken van een
docker-compose.ymlom alle benodigde services (backend, frontend, database, cache) voor lokale ontwikkeling te starten. Dit stelt me in staat om snel een geïsoleerde omgeving op te zetten. - Testen: Het gebruik van Docker Compose om testomgevingen te creëren met verschillende configuraties van services.
- Implementatie op staging/production: Hoewel voor productie vaak krachtigere orkestrators (zoals Kubernetes) worden gebruikt, heb ik Docker Compose gebruikt in vroege fasen of voor kleine projecten voor deployment op staging-servers.
Voorbeelden van het gebruik van velden in docker-compose.yml:
services: Definieert een set containers.image: Specificatie van de Docker-afbeelding.build: Het bouwen van de afbeelding uit een Dockerfile.ports: Poortmapping.volumes: Het monteren van volumes voor gegevensopslag of broncode.networks: Het definiëren van aangepaste netwerken.depends_on: Het instellen van afhankelijkheden tussen services.environment: Het doorgeven van omgevingsvariabelen aan de container.
Een eenvoudig voorbeeld van configuratie voor een webapplicatie en database:
services:
webapp:
build: ./webapp # Bouwen uit Dockerfile in de webapp directory
ports:
- "80:80" # Poort 80 van host naar poort 80 van container
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb # Omgevingsvariabele
depends_on:
- db # Webapp hangt af van de database
db:
image: postgres:13 # Gebruik van PostgreSQL image
volumes:
- db_data:/var/lib/postgresql/data # Data persistentie
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
db_data: # Gedefinieerde volume
Veelgebruikte commando’s:
docker compose up -d # Start services op de achtergrond
docker compose down # Stop en verwijder services
docker compose build # Bouw images
docker compose logs <service_name> # Bekijk logs van een specifieke service
docker compose exec <service_name> <command> # Voer een commando uit binnen de container
Ik ben vertrouwd met de verschillende versies van de Compose-syntaxis en hun verschillen. Ik begrijp hoe ik .env-bestanden kan gebruiken om omgevingsvariabelen te beheren en hoe ik profielen kan toepassen om verschillende sets services te starten.