여러개의 docker-compose 등록하기
지난번 구축한 홈서버에 점점 서비스들이 많아지면서 어떻게 서비스를 관리하면 좋을지 고민이 되기 시작했다. 기본적으로 docker-compose
로 컨테이너를 관리하고 있었는데 서비스가 많아지면서 docker-compose.yml
파일이 점점 무거워지고 하나의 서비스만 종료를 하고 싶어도 전체 시스템을 다운해야했다.
/app
├─ docker-compose.yml
├─ nginx
├─ gitlab
├─ ghost
└─ docker-registry
$ docker-compose up -d # 모든 시스템 온라인
$ docker-compose down # 모든 시스템 오프라인
따라서 각 서비스 별로 docker-compose.yml
를 분할하여 관리하기로 하였다.
/app
├─ docker-compose
│ ├─ docker-compose-blog.yml
│ ├─ docker-compose-registry.yml
│ ├─ docker-compose-gitlab.yml
│ └─ docker-compose-proxy.yml
├─ nginx
├─ gitlab
├─ ghost
└─ docker-registry
위와 같이 각 시스템 별로 docker-compose
파일을 만들어주었다. 그리고 각 파일은 -f
옵션을 주어 실행시킬 수 있다.
$ docker-compose -f docker-compose/docker-compose-blog up -d # up
$ docker-compose -f docker-compose/docker-compose-blog down # down
-p
옵션을 활용하면 docker-compose
를 관리하기 편해진다.
$ docker-compose -f docker-compose/docker-compose-blog -p blog up -d # up
$ docker-compose -p blog down # down
그리고 각 컨테이너간 호스트네임을 참조할 수 있게끔 각 yml에 Bridge Network
를 추가하였다.
$ docker network create -d bridge backbone
networks:
backbone:
name: backbone
driver: bridge
external: true
위와 같이 네트워크를 구성하면 아래와 같이 (Line 4) 도커 컨테이너를 호스트네임으로 활용하여 alias처럼 다룰 수 있다.
# example of nginx conf file
upstream ghost-server {
server ghost:2368; # 도커 컨테이너를 가져올 수 있다.
}
server {
server_name j911.me;
#listen 80;
# *** for https support uncomment following lines ***
listen 443 ssl;
...