docker compose

About_work·2024년 8월 13일
0

docker

목록 보기
2/4

1. Docker Compose의 개념

  • Docker Compose는 여러 개의 컨테이너로 구성된 다중 컨테이너 애플리케이션을 정의하고 관리하기 위한 도구
  • Docker Compose는 YAML 파일을 사용(docker-compose.yml)하여
    • 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의
    • 모든 서비스가 어떻게 상호작용하고 구성되는지 한 곳에서 관리할 수 있음
  • Docker Compose의 주요 목적
    • 복잡한 애플리케이션 스택을 손쉽게 정의하고 실행할 수 있게 해주는 것
    • 예를 들어,
      • 웹 애플리케이션이 데이터베이스, 캐시 서버, 웹 서버 등을 포함하고 있다면,
      • 각 구성 요소를 별도의 컨테이너로 실행하고 이들을 효율적으로 관리하는 것이 Docker Compose의 역할


2. Docker Compose를 쓰는 목적

  • Docker Compose의 주된 목적은 다음과 같습니다:
  1. 다중 컨테이너 애플리케이션 관리:
  • 여러 서비스가 연동되는 애플리케이션을 하나의 파일로 정의하고 쉽게 배포할 수 있음
  • 예를 들어, 웹 서버, 데이터베이스, 캐시 서버 등을 하나의 애플리케이션으로 묶어서 관리합니다.
  1. 일관된 개발 환경 제공:
  • 개발자들이 동일한 환경에서 작업할 수 있게 도와줍니다.
  • 애플리케이션의 모든 서비스와 의존성을 명확하게 정의하므로,
    • 팀원들이 동일한 환경을 쉽게 재현할 수 있음
  1. 자동화된 환경 설정 및 배포:
  • Docker Compose를 사용하면 다양한 서비스의 설정을 자동화할 수 있으며,
  • 이를 통해 일관된 배포 프로세스를 유지할 수 있습니다.
  1. 환경 격리 및 재사용성:
  • 각 애플리케이션은 별도의 컨테이너에서 실행되므로, 서로 다른 프로젝트나 환경이 서로 영향을 주지 않습니다.
  • 이는 테스트 및 프로덕션 환경을 쉽게 분리하고 관리할 수 있게 해줍니다.


3. Docker Compose 사용법

  • Docker Compose는 docker-compose.yml 파일을 중심으로 사용.
  • 이 파일에 -> 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의하고,
  • Docker Compose 명령어를 사용해 이를 관리

3.1. Docker Compose 설치

  • Docker Compose는 Docker와 함께 설치되거나 별도로 설치할 수 있습니다.
  • 설치 여부는 다음 명령어로 확인할 수 있습니다:
docker-compose --version

3.2. docker-compose.yml 파일 작성

  • docker-compose.yml 파일은 애플리케이션의 여러 서비스를 정의하는 데 사용
  • 예를 들어, 웹 서버와 데이터베이스를 포함한 간단한 애플리케이션의 docker-compose.yml 파일은 다음과 같이 작성할 수 있습니다:
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./web:/usr/share/nginx/html
    networks:
      - mynetwork

  database:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - mynetwork

networks:
  mynetwork:

volumes:
  db_data:

위 파일에서:

  • services: 웹 서버와 데이터베이스를 정의했습니다.
  • networks:
    • 두 서비스가 서로 통신할 수 있도록 동일한 네트워크를 설정
  • volumes:
    • 데이터베이스 데이터는 db_data라는 볼륨에 저장

3.3. 애플리케이션 실행

  • docker-compose.yml 파일을 작성한 후, 다음 명령어로 애플리케이션을 실행할 수 있습니다:
docker-compose up -d
  • -d 옵션은 백그라운드에서 컨테이너를 실행하는 데 사용
  • 이 명령어는
    • docker-compose.yml에 정의된 모든 서비스를 시작하고,
    • 연결된 네트워크, 볼륨 등을 설정

3.4. 서비스 관리

  • 실행 중인 컨테이너를 관리하는 데 필요한 여러 명령어가 있습니다:

  • 컨테이너 상태 확인:

    docker-compose ps
    • 현재 실행 중인 컨테이너의 상태를 확인할 수 있습니다.
  • 로그 확인:

    docker-compose logs
    • 모든 서비스의 로그를 볼 수 있습니다.
  • 서비스 중지:

    docker-compose stop
    • 모든 컨테이너를 중지
  • 서비스 종료 및 제거:

    docker-compose down
    • 모든 컨테이너를 중지하고, 네트워크, 볼륨 등도 제거
  • 서비스 재시작:

    docker-compose restart
    • 모든 컨테이너를 재시작

3.5. 환경 파일 사용

  • Docker Compose는 .env 파일을 지원하여, 환경 변수로 설정된 값을 사용할 수 있습니다.
  • 예를 들어, docker-compose.yml에서 다음과 같이 정의할 수 있습니다:
version: '3'
services:
  web:
    image: nginx:${NGINX_VERSION}
  • 그리고 .env 파일에 다음과 같이 환경 변수를 정의합니다:
NGINX_VERSION=latest
  • 이렇게 하면, docker-compose.yml 파일에서 정의된 서비스가 .env 파일의 값을 참조하여 동작하게 됩니다.


4. 결론

  • Docker Compose는 다중 컨테이너 애플리케이션의 관리를 단순화하고, 일관된 개발 환경자동화된 배포 프로세스를 제공하는 강력한 도구
  • docker-compose.yml 파일을 작성하고, Docker Compose 명령어를 사용하여 애플리케이션의 전체 스택을 손쉽게 관리할 수 있습니다.
  • 이를 통해 개발자들은 더 효율적으로 애플리케이션을 배포하고, 유지 관리할 수 있습니다.
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글