Docker Compose
Docker Compose는 여러 Container를 정의하고 공유 및 한 번의 명령어로 모두 실행하거나 종료할 수 있도록 개발된 도구이다.
그러기 위해서는 기본적으로 서비스를 정의하는 YAML 파일을 만들어야한다.
Docker Compose 설치
Windows 또는 Mac용 Docker Desktop을 설치한 경우라면 Docker Compose가 포함되어 설치 되어 바로 진행할 수 있고 Linux라면 Docker Compose를 따로 설치해줘야한다.
1. 다음 명령어를 통해 Docker Compose의 현재 공개된 릴리즈버전을 다운받는다
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2. 바이너리에 실행 권한을 적용한다.
$ sudo chmod +x /usr/local/bin/docker-compose
3. 설치 및 버전 확인
$ docker-compose --version
Compose 파일 만들기
Compose로 실행시킬 Container를 생성하는데 사용한 명령어
docker run\
--name discovery-service -d\
--network test-network -p 8761:8761\
blac2013/discovery-service:1.0
--------------------------------------
docker run\
--name config-service -d\
--network test-network -p 8888:8888\
-e "spring.rabbitmq.host=rabbitmq"\
-e "spring.rabbitmq.username=guest"\
-e "spring.rabbitmq.password=guest"\
blac2013/config-service:1.0
1. 먼저 yml파일을 만들고 스키마 버전을 정의한다. 버전은 최신버전을 사용하는것을 권장한다.
최신버전은 Compose 버전 에서 확인할 수 있다.
version: '3.8'
2. 실행할 container 목록 정의
version: '3.8'
services:
config-service:
discovery-service:
3. container의 Image 정의
version: '3.8'
services:
config-service:
image: blac2013/config-service:1.0
discovery-service:
image: blac2013/discovery-service:1.0
4. 서비스의 포트번호 지정 (-p)
version: '3.8'
services:
discovery-service:
image: blac2013/discovery-service:1.0
ports:
- 8761:8761
config-service:
image: blac2013/config-service:1.0
ports:
- 8888:8888
5. 환경변수 정의 (-e)
version: '3.8'
services:
discovery-service:
image: blac2013/discovery-service:1.0
ports:
- 8761:8761
config-service:
image: blac2013/config-service:1.0
ports:
- 8888:8888
environment:
spring.rabbitmq.host: rabbitmq
spring.rabbitmq.username: guest
spring.rabbitmq.password: guest
6. 네트워크 정의 (--network)
version: '3.8'
services:
discovery-service:
image: blac2013/discovery-service:1.0
ports:
- 8761:8761
networks:
- my-network
config-service:
image: blac2013/config-service:1.0
ports:
- 8888:8888
environment:
spring.rabbitmq.host: rabbitmq
spring.rabbitmq.username: guest
spring.rabbitmq.password: guest
networks:
- my-network
networks:
my-network:
name: test-network
7. 완성된 compose파일 실행
$ docker-compose -f /Users/burger/Desktop/compose-files/discovery-config-compose.yml up -d
[+] Running 3/3
⠿ Network test-network Created 0.1s
⠿ Container compose-files-discovery-service-1 Started 0.7s
⠿ Container compose-files-config-service-1 Started
가끔 yaml파일 내용을 복사하거나 잘못 가져오면 다음과 같은 에러가 나는 경우가 있는데
found character that cannot start any token
해당 에러는 들여쓰기 오류로 탭을 지우고 스페이스로 들여쓰기를 맞춰주면 오류가 해결되는 경우가 있다.
docker ps 명령어로 현재 실행중인 프로세스 목록을 보면 다음과 같이 작성한 container 정의대로 실행된 것을 확인할 수 있다.
'Docker' 카테고리의 다른 글
[Docker] Docker Filebeat를 이용하여 spring boot 로그 시각화 (0) | 2021.11.29 |
---|---|
[Docker] Elasticsearch, Kibana를 docker-compose로 구동 (0) | 2021.11.25 |
[Docker] Docker 데이터 저장 (볼륨 / 바인드 마운트 / tmpfs) (0) | 2021.11.23 |
[Docker] Ubuntu에서 Docker Engine + Docker Compose 설치 (0) | 2021.11.22 |
[Docker] Docker에서 RabbitMQ Image생성 및 실행 (0) | 2021.11.17 |