Docker Compose
Docker Compose(2022/05/09)
1. Docker Compose란?
정의 : 다중 컨테이너 도커 어플리케이션을 정의하고 실행하기 위한 도구 → 작업을 진행하다 보면 여러 컨테이너를 생성해야 할 경우가 온다. → 이 때, 컨테이너 생성을 위해 일일이 명령어를 입력하는 것은 시간이 오래 걸린다. → 따라서, compose를 통해 여러 개의 컨테이너를 하나의 프로젝트로서 다룰 수 있게 한다
(Windows는 Docker Desktop을 설치하면, 자동적으로 docker-compose가 설치되어 있다)
1
$ docker-compose -v
(docker compose를 사용하려면, docker-compose.yml이라는 파일이 필요하다)
(주의 : 들여쓰기 할때 Tab은 인식을 못함. 스페이스 2번으로 들여쓰기)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "8000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
참고 : https://docs.docker.com/compose/
2. Single Service
ex) postgresql DB를 compose를 통해 올리기 1) docker-compose.yml 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3.9" # optional since v1.27.0
services:
postgres-db:
container_name : postgres_compose
image : postgres:latest
volumes :
- compose_volume:/var/lib/postgresql/data
ports :
- "5432:5432"
environment :
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
volumes :
compose_volume :
external : true
2) docker compose 실행
1
$ docker-compose up -d # -d : 백그라운드 실행
3) docker compose 실행 확인
1
$ docker ps
4) docker compose를 중단
1
$ docker-compose down
3. Multiple Service
ex) postgresql db, mysql db 모두 올려보기
1) docker-compose.yml 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: "3.9" # optional since v1.27.0
services:
postgres-db:
container_name : postgres_compose
image : postgres:latest
volumes :
- compose_volume:/var/lib/postgresql/data
ports :
- "5432:5432"
environment :
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
mysql-db :
container_name : mysql_compose
image : mysql:5.7
volumes :
- compose_volume_mysql:/var/lib/mysql
environment :
MYSQL_DATABASE: "wordpress"
MYSQL_ROOT_PASSWORD: "password"
volumes :
compose_volume :
external : true
compose_volume_mysql:
external : true
2) docker-compose 실행
1
$ docker-compose up -d
3) mysql 접속
1
2
$ docker exec -it mysql_compose bash
root@{containerID}:/# mysql -u root -p
4) postgresql 접속
1
2
$ docker exec -it postgres_compose
root@{containerID}:/# psql -U postgres
4. Multiple Service in a pre-defined network
1) compose_network라는 이름의 네트워크 형성 (네트워크 종류는 bridge)
1
$ docker network create —driver bridge compose_network
2) docker-compose.yml 생성
3) docker-compose up
4) localhost:5050 접속 (pgadmin 접속)
This post is licensed under CC BY 4.0 by the author.