본문 바로가기
Infra, Cloud/Docker

[Docker] Docker Compose를 사용해서 한 번에 Container 관리

by J4J 2022. 2. 3.
300x250
반응형

안녕하세요. 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
$ 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 파일을 만들어주겠습니다.

 

폴더 구성

 

 

728x90

 

 

마지막으로 위의 링크들에서 각 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 관리하는 방법에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

 

 

 

728x90
반응형

'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

댓글