gnusraun

docker-compose 설치 및 사용 본문

DevOps/Docker

docker-compose 설치 및 사용

gnusraun 2024. 1. 19. 14:47
728x90

docker-compose

여러 Docker 컨테이너를 정의하고 실행하기 위한 도구입니다. 이를 사용하면 복잡한 어플리케이션을 구성하는 여러 컨테이너를 쉽게 관리하고 조정할 수 있습니다. 주로 YAML 파일(docker-compose.yml)을 통해 서비스, 네트워크, 볼륨 등을 정의하고, 단일 명령으로 이러한 모든 구성요소를 함께 시작하거나 정지할 수 있습니다.

 

주요 기능 및 장점

  1. 멀티-컨테이너 정의: docker-compose.yml 파일을 통해 하나의 어플리케이션이 필요로 하는 모든 컨테이너(예: 데이터베이스, 백엔드, 프론트엔드 등)를 정의할 수 있습니다.
  2. 간편한 구성: YAML 파일 형식을 사용하여 서비스 구성을 쉽게 읽고 작성할 수 있습니다.
  3. 환경 분리: 개발, 테스트, 프로덕션 등 다양한 환경에 대해 별도의 구성을 만들 수 있습니다.
  4. 서비스 관리: docker-compose 명령을 사용하여 모든 서비스를 한 번에 시작, 정지, 재구축 및 스케일링할 수 있습니다.
  5. 종속성 관리: 서비스 간의 의존성 및 실행 순서를 정의할 수 있습니다

 

docker-compose 설치하기 - Ubuntu

// 패키지 리스트 최신으로 업데이트
$ sudo apt update

// 최신버전 설치 (2024.1.18기준 v2.24.0)
$ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

// 실행 권한 부여
$ sudo chmod +x /usr/local/bin/docker-compose

// 버전 확인
$ docker-compose version

// docker-compose.yml 파일 생성
$ nano docker-compose.yml

 

docker-compose 작성하기

// 설정 코드 추가
version: '3'
services:
  app:
    build:
      context: .
    image: audio-recording-python
    container_name: audio-recording-python
    volumes:
      - ./src:/app
    working_dir: /app
    command: ["python", "app.py"]
    ports:
      - "5000:5000"
    environment:
      - FLASK_APP=app.py

  nginx:
    image: nginx:latest
    container_name: audio-recording-nginx
    ports:
      - "81:81"
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

 

docker-compose.yml 파일은 두 개의 서비스, app과 nginx를 정의하고 있습니다.

각 서비스는 Docker 컨테이너로 실행됩니다. 이 파일은 복잡한 어플리케이션을 구성하는 여러 컨테이너를 쉽게 관리할 수 있게 해줍니다.

app 서비스

  1. build: Dockerfile의 위치를 지정합니다. 이 경우 현재 디렉토리(.)에 있습니다.
  2. image: 빌드된 이미지의 이름을 audio-recording-python으로 지정합니다.
  3. container_name: 컨테이너의 이름을 audio-recording-python으로 설정합니다.
  4. volumes: 현재 디렉토리의 src 폴더를 컨테이너의 /app 폴더에 마운트합니다. 이렇게 하면 호스트 시스템의 파일 변경이 컨테이너에 바로 반영됩니다.
  5. working_dir: 컨테이너 내의 작업 디렉토리를 /app으로 설정합니다.
  6. command: 컨테이너 시작 시 실행할 명령어를 지정합니다. 이 경우 python app.py를 실행합니다.
  7. ports: 호스트의 5000 포트를 컨테이너의 5000 포트에 연결합니다.
  8. environment: 컨테이너 환경 변수를 설정합니다. FLASK_APP을 app.py로 설정합니다.

nginx 서비스

  1. image: 사용할 이미지를 Docker Hub의 nginx:latest로 지정합니다.
  2. container_name: 컨테이너의 이름을 audio-recording-nginx로 설정합니다.
  3. ports: 호스트의 81 포트를 컨테이너의 81 포트에 연결합니다.
  4. volumes: 현재 디렉토리의 default.conf 파일을 컨테이너의 /etc/nginx/conf.d/default.conf에 마운트합니다. 이는 Nginx 서버의 구성을 설정합니다.
  5. depends_on: nginx 서비스가 app 서비스에 의존함을 나타냅니다. 즉, app 서비스가 먼저 실행된 후 nginx 서비스가 시작됩니다.

 

주요 명령어

  • docker-compose up: 서비스를 시작하고 로그를 출력합니다.
  • docker-compose down: 서비스를 정지하고 모든 리소스를 제거합니다.
  • docker-compose build: 서비스의 이미지를 빌드합니다.
  • docker-compose logs: 서비스의 로그를 확인합니다.

 

728x90

'DevOps > Docker' 카테고리의 다른 글

Docker Dockerfile 만들기  (0) 2024.01.19
Docker 명령어 모음  (0) 2024.01.19
Docker 설치하기 - Ubuntu  (0) 2024.01.19
Docker Java war 컨테이너 만들기  (0) 2023.06.11
Docker python 컨테이너 만들기  (0) 2023.06.11