도커 컴포즈란?
- 보통 개발할 때 로컬 환경이나 개발 환경에서 가상의 DB를 띄우기 위해서 많이 사용한다.
- 도커 컴포즈는 단일 호스트 환경에서 동작하고, 고가용성도 지원하지 않기 때문에 운영에서는 비슷한 역할을 하지만 고가용성을 지원하는 쿠버네티스를 사용한다.
도커 컴포즈 이용하기 (Node.js 기준)
- 프로젝트 메인 디렉토리에
docker-compose.yaml
파일을 생성한다.
도커 컴포즈 문법에 맞게 docker-compose.yaml 파일 작성
- Docker Compose 공식문서 에 작성법이 있긴 한데, 예제를 보거나 GPT 를 이용하는 것이 빠를 것 같다.
- Postgres Yaml 파일 작성 방식은 Postgres 도커 페이지 에서 참고할 수있다.
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:
이 구성은 다음을 수행합니다:
버전: 작성 파일 형식의 버전을 지정합니다. 이 예에서는 버전 '3.8'이 사용됩니다.
서비스: 실행할 서비스를 정의합니다. 이 경우 PostgreSQL 서비스만 정의됩니다.
이미지: Docker Hub의 최신 버전의 PostgreSQL 이미지를 사용합니다.
환경: 환경 변수를 설정합니다.
POSTGRES_USER
와POSTGRES_PASSWORD
는 모두 'postgres'로 설정됩니다.ports: 컨테이너의 기본 PostgreSQL 포트(5432)를 호스트에 매핑합니다. 이렇게 하면 호스트 머신의 포트 5432를 사용하여 컨테이너 내부에서 실행 중인 PostgreSQL 서버에 연결할 수 있습니다.
볼륨: 데이터베이스 데이터를 유지할 볼륨을 마운트합니다. 'postgres_data'는 볼륨의 이름이고,
/var/lib/postgresql/data
는 컨테이너에서 PostgreSQL이 데이터를 저장하는 경로입니다.
이 구성은 docker-compose.yml
이라는 파일에 저장할 수 있습니다. 이 파일이 있는 디렉터리로 이동하여 docker-compose up
명령을 실행하면 PostgreSQL 컨테이너가 시작됩니다. 그러면 PostgreSQL 이미지가 없는 경우 다운로드되고 지정된 설정으로 컨테이너가 시작됩니다.
도커 컴포즈 실행
- 위에 나온 것처럼
docker-compose up
명령어를 통해 실행 가능하다.- 단, 데스크탑용 도커가 설치되어 있고 실행중인 상태에서 입력해야 한다.
'인프라 > 도커' 카테고리의 다른 글
도커 컨테이너의 라이프사이클 (Docker container lifecycle) (0) | 2024.02.06 |
---|---|
컨테이너 런타임 (Container Runtime) 이란 무엇인가? 그리고 runc (0) | 2024.02.04 |
도커의 아키텍처 (0) | 2024.02.04 |
컨테이너 가상화란? (0) | 2024.02.04 |
LXC (Linux Container, 리눅스 컨테이너) 란? (0) | 2024.02.04 |