Docker Compose merupakan tools untuk mendefinisikan dan menjalankan aplikasi Docker yang memiliki banyak container. Di sini kita menggunakan file YAML (Yet Another Markup Language) untuk membuat konfigurasi dari aplikasi. Docker Compose ini bekerja pada lingkungan development, testing, staging production seperti halnya workflow CI (Continuous Integration).
Ada tiga langkah dasar dalam menggunakan Docker Compose yaitu
- Mendefinisikan environment aplikasi pada Dockerfile
- Mendefinisikan layanan-layanan pada docker-compose.yml
- Menjalankan
docker compose up
Untuk lebih jelasnya kita lihat contoh seperti berikut ini
- Contoh struktur file dari https://github.com/dockersamples/example-voting-app adalah seperti berikut ini
- Contoh isi docker-compose.yml adalah seperti berikut ini
# version is now using "compose spec" # v2 and v3 are now combined! # docker-compose v1.27+ required services: vote: build: ./vote # use python rather than gunicorn for local dev command: python app.py depends_on: redis: condition: service_healthy volumes: - ./vote:/app ports: - "5000:80" networks: - front-tier - back-tier result: build: ./result # use nodemon rather than node for local dev command: nodemon server.js depends_on: db: condition: service_healthy volumes: - ./result:/app ports: - "5001:80" - "5858:5858" networks: - front-tier - back-tier worker: build: context: ./worker depends_on: redis: condition: service_healthy db: condition: service_healthy networks: - back-tier redis: image: redis:5.0-alpine3.10 volumes: - "./healthchecks:/healthchecks" healthcheck: test: /healthchecks/redis.sh interval: "5s" ports: ["6379"] networks: - back-tier db: image: postgres:9.4 environment: POSTGRES_USER: "postgres" POSTGRES_PASSWORD: "postgres" volumes: - "db-data:/var/lib/postgresql/data" - "./healthchecks:/healthchecks" healthcheck: test: /healthchecks/postgres.sh interval: "5s" networks: - back-tier volumes: db-data: networks: front-tier: back-tier:
- Contoh struktur file dari aplikasi vote adalah seperti berikut ini
- Contoh isi file Dockerfile aplikasi Vote adalah seperti berikut ini
# Using official python runtime base image FROM python:3.9-slim # add curl for healthcheck RUN apt-get update \ && apt-get install -y --no-install-recommends \ curl \ && rm -rf /var/lib/apt/lists/* # Set the application directory WORKDIR /app # Install our requirements.txt COPY requirements.txt /app/requirements.txt RUN pip install -r requirements.txt # Copy our code from the current folder to /app inside the container COPY . . # Make port 80 available for links and/or publish EXPOSE 80 # Define our command to be run when launching the container CMD ["gunicorn", "app:app", "-b", "0.0.0.0:80", "--log-file", "-", "--access-logfile", "-", "--workers", "4", "--keep-alive", "0"]
Informasi lebih lanjut silahkan mengunjungi
1. https://docs.docker.com/compose/ .
2. https://docs.docker.com/desktop/dashboard/ .
3. https://github.com/dockersamples/example-voting-app .
Kunjungi www.proweb.co.id untuk menambah wawasan anda.