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

  1. Mendefinisikan environment aplikasi pada Dockerfile
  2. Mendefinisikan layanan-layanan pada docker-compose.yml
  3. Menjalankan
    docker compose up

Untuk lebih jelasnya kita lihat contoh seperti berikut ini

  1. Contoh struktur file dari https://github.com/dockersamples/example-voting-app adalah seperti berikut ini

  2. 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:
    
  3. Contoh struktur file dari aplikasi vote adalah seperti berikut ini

  4. 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.

Pengertian Docker Compose