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
1
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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
# 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
123456789101112131415161718192021222324
# 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.