인프라/도커

도커 컴포즈 (Docker Compose) 란? 도커 컴포즈 사용법

Jake Seo 2024. 2. 18. 22:37

도커 컴포즈란?

  • 보통 개발할 때 로컬 환경이나 개발 환경에서 가상의 DB를 띄우기 위해서 많이 사용한다.
  • 도커 컴포즈는 단일 호스트 환경에서 동작하고, 고가용성도 지원하지 않기 때문에 운영에서는 비슷한 역할을 하지만 고가용성을 지원하는 쿠버네티스를 사용한다.

도커 컴포즈 이용하기 (Node.js 기준)

  • 프로젝트 메인 디렉토리에 docker-compose.yaml 파일을 생성한다.

picture 0

도커 컴포즈 문법에 맞게 docker-compose.yaml 파일 작성

services: # 자동완성됨
  postgres: # 우리가 지어준 서비스의 이름
    image: postgres:15 # 도커 허브에서 정보를 가져와서 자동완성됨
    restart: always
    volumes: # 도커 이미지 안에 존재했던 정보를 실제 디렉토리와 매핑. 도커를 종료해도 데이터가 남도록 함.
      - ./postgres-data:/var/lib/postgresql/data # 콜론을 기준으로 왼쪽은 현재 위치, 오른쪽은 이미지 안에 존재하는 위치. 둘의 싱크를 맞춰주겠다.
    ports:
      # 로컬 환경과 이미지의 두 포트를 연동함
      - "5431:5432" # 로컬의 5431을 도커의 5432와 연결, 로컬에서 연결할 땐 포트 충돌 방지를 위해 5431 로 바인딩
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: postgres

GPT 에 물어본 예제

  • 아래와 같이 프롬프트를 작성하면, 기작성된 yaml 파일을 받을 수 있고, 여기서 모르는 뜻을 물어봐서 수정해보면 될 것 같다.

아래는 내 질문 예시다.

Give me a yaml file example of docker compose. I want to create latest version of postgresql container. set username and password to postgres. i want to use default port number.

답변

Sure, I can help you with that. Below is an example of a Docker Compose YAML file for setting up a PostgreSQL container with the latest version. The username and password are set to "postgres", and it uses the default PostgreSQL port, which is 5432.
version: "3.8"
services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

이 구성은 다음을 수행합니다:

  1. 버전: 작성 파일 형식의 버전을 지정합니다. 이 예에서는 버전 '3.8'이 사용됩니다.

  2. 서비스: 실행할 서비스를 정의합니다. 이 경우 PostgreSQL 서비스만 정의됩니다.

  3. 이미지: Docker Hub의 최신 버전의 PostgreSQL 이미지를 사용합니다.

  4. 환경: 환경 변수를 설정합니다. POSTGRES_USERPOSTGRES_PASSWORD는 모두 'postgres'로 설정됩니다.

  5. ports: 컨테이너의 기본 PostgreSQL 포트(5432)를 호스트에 매핑합니다. 이렇게 하면 호스트 머신의 포트 5432를 사용하여 컨테이너 내부에서 실행 중인 PostgreSQL 서버에 연결할 수 있습니다.

  6. 볼륨: 데이터베이스 데이터를 유지할 볼륨을 마운트합니다. 'postgres_data'는 볼륨의 이름이고, /var/lib/postgresql/data는 컨테이너에서 PostgreSQL이 데이터를 저장하는 경로입니다.

이 구성은 docker-compose.yml이라는 파일에 저장할 수 있습니다. 이 파일이 있는 디렉터리로 이동하여 docker-compose up 명령을 실행하면 PostgreSQL 컨테이너가 시작됩니다. 그러면 PostgreSQL 이미지가 없는 경우 다운로드되고 지정된 설정으로 컨테이너가 시작됩니다.

도커 컴포즈 실행

  • 위에 나온 것처럼
  • docker-compose up 명령어를 통해 실행 가능하다.
    • 단, 데스크탑용 도커가 설치되어 있고 실행중인 상태에서 입력해야 한다.
반응형