안녕하세요. J4J입니다.
이번 포스팅은 Docker Compose를 사용해서 한 번에 Container 관리하는 방법에 대해 적어보는 시간을 가져보려고 합니다.
들어가기에 앞서 다음 글을 참고하시면 좋을 것 같습니다.
Docker Compose 사용 방법
위의 링크들을 참고해보면 지금까지 Docker를 이용하여 MySQL, SpringBoot, Next, Nginx 배포 환경을 구축했었습니다.
만약 저처럼 4개의 환경을 모두 테스트해보신 분들이라면 각 환경마다 Docker Container들을 관리하는 것은 너무 단순하고 반복적인 작업들이라는 것을 느끼실 수 있습니다.
단순하고 반복적인 작업들은 의미 없는 시간을 뺏는(?) 부분이라고 개인적으로 생각하기 때문에 이런 아까운 시간들을 보완할 수 있는 방법을 생각하게 되었고 그에 대한 해결 방안으로 Docker Compose를 사용하게 되었습니다.
Docker Compose를 사용하게 된다면 각 환경마다 만들어지는 Container들을 한 번에 관리해줄 수 있다는 장점이 있습니다.
개발을 하다보면 여러 Container들을 사용해야 되는 것은 필수적인 요소가 되는데 Docker Compose를 사용하면 보다 효율적이고 편리하게 Container들을 관리해줄 수 있습니다.
지금까지 만들었던 4개의 Container들을 Docker Compose를 이용하여 관리될 수 있도록 만들어보겠습니다.
[ 1. Docker Compose 설치 ]
- Window → Window Docker가 설치되어 있으면 사용 가능, Window Docker 다운로드
- Ubuntu → [Docker] Docker Compose 설치하기 (Ubuntu 20.04)
설치가 완료되었는지는 다음 명령어를 터미널에 입력해서 확인해줄 수 있습니다.
// window
$ docker-compose version
// ubuntu
$ docker-compose --version
version 정보가 나올 경우 설치가 정상적으로 이루어져 있다고 생각할 수 있습니다.
[ 2. docker-compose.yml 파일 생성 및 작성 ]
현재 저의 폴더 구성은 다음과 같습니다.
그리고 이번에 만들려고 하는 docker-compose.yml 파일은 Docker Compose 실행을 위한 설정 파일입니다.
저는 Docker Compose를 이용해 be, db, fe, nginx를 위한 Container들을 모두 관리할 거기 때문에 다음과 같이 최상단에 docker-compose.yml 파일을 만들어주겠습니다.
마지막으로 위의 링크들에서 각 Container들마다 만들어진 환경과 동일한 환경의 Container가 만들어질 수 있도록 다음과 같이 docker-compose.yml을 작성해보겠습니다.
# version 설정
version: '3'
# service 등록
services:
db: # service 이름
# 환경 변수 파일 설정
env_file:
- ./db/.env
# 이미지 생성
build: ./db # ./db경로에 있는 Dockerfile을 이용하여 build
# build된 이미지를 활용하여 컨테이너 생성 및 실행
ports: # port 설정
- 3306:3306
volumes: # volume 설정
- ./db/data:/var/lib/mysql
be: # service 이름
# 이미지 생성
build: ./be # ./be경로에 있는 Dockerfile을 이용하여 build
# build된 이미지를 활용하여 컨테이너 생성 및 실행
ports: # port 설정
- 8080:8080
fe: # service 이름
# 이미지 생성
build: ./fe # ./fe경로에 있는 Dockerfile을 이용하여 build
# build된 이미지를 활용하여 컨테이너 생성 및 실행
ports: # port 설정
- 8088:8088
nginx: # service 이름
# 이미지 생성
build: ./nginx # ./nginx경로에 있는 Dockerfile을 이용하여 build
# build된 이미지를 활용하여 컨테이너 생성 및 실행
ports: # port 설정
- 80:80
volumes: # volume 설정
- ./nginx/nginx_local.conf:/etc/nginx/nginx.conf
[ 3. Docker Compose 실행 ]
작성한 docker-compose.yml을 가지고 Docker Compose를 실행해보도록 하겠습니다.
(기존에 위의 링크들을 통해 생성해둔 Container들이 있다면 port가 충돌되니 중지해주시길 바랍니다.)
먼저 터미널에 docker-compose.yml파일이 있는 경로로 이동해주시고 이동이 완료되었다면 다음 명령어를 입력해주시면 됩니다.
$ docker-compose up -d
// docker-compose up: docker compose 실행
// -d: 데몬으로 실행 (실행하라는 명령만 보내기)
[ 4. 생성된 이미지, 컨테이너 확인 ]
Docker Compose를 실행하면 각 Container들을 생성하기 위해 해왔던 이미지 빌드 과정과 Container 생성 및 실행을 자동적으로 모두 수행해줍니다.
모든 작업이 문제없이 수행되었다면 다음 명령어들을 통해 생성된 이미지와 Container들을 확인할 수 있습니다.
$ docker images // 이미지 확인
$ docker ps -a // 컨테이너 확인
테스트
Docker Compose를 이용하여 만든 Docker Container들이 정상 동작되는지 설정해둔 방식에 따라 접속을 해보시면 될 것 같습니다.
저 같은 경우는 다음과 같이 기존에 작업해둔 화면을 확인할 수 있었습니다.
이상으로 Docker Compose를 사용해서 한 번에 Container 관리하는 방법에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
'Infra, Cloud > Docker' 카테고리의 다른 글
[Docker] Nginx 환경 구축 (0) | 2022.02.01 |
---|---|
[Docker] Next 환경 구축 (0) | 2022.02.01 |
[Docker] SpringBoot 환경 구축 (0) | 2022.01.26 |
[Docker] MySQL 환경 구축 (0) | 2022.01.24 |
[Docker] Docker Compose 설치하기 (Ubuntu 20.04) (0) | 2022.01.23 |
댓글