본문 바로가기

Docker

Docker-compose 사용하기

1. 개요

다음은 이전 포스팅에서 사용한 docker에 postgres를 띄우기 위한 명령어이다.

docker run -p 5432:5432 --network doc-net --name test-postgres -e POSTGRES_PASSWORD=root -d postgres:latest

바로 문제가 보인다. 너무 길다. 만약 프로젝트가 더 복잡해지고, 더 많은 컨테이너가 필요하다면 이런 명령어를 모두 쳐야 한다. 이를 개선하기 위해 docker compose를 사용해보자.

2. docker-compose.yml

services:
  test-postgres:
    image: postgres:17
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: gugumo
    networks:
      - doc-net


  test-redis:
    image: redis
    restart: always
    ports:
      - "6379:6379"
    networks:
      - doc-net
    volumes:
      - ./redis-data:/data

  backend:
    container_name: backend
    image: theperz/gugumo-test
    ports:
      - "8080:8080"
    depends_on:
      - test-postgres
      - test-redis
    networks:
      - doc-net

networks:
  doc-net:
    driver: bridge

gugumo 프로젝트 배포에 사용한 docker compose 전문이다. 하나씩 살펴보자.

 

networks:
  doc-net:
    driver: bridge

우선 doc-net 라는 이름의 네트워크를 만든다.

 

  backend:
    container_name: backend
    image: theperz/gugumo-test
    ports:
      - "8080:8080"
    depends_on:
      - test-postgres
      - test-redis
    networks:
      - doc-net

application 관련 정보이다. doc-net 위에 올라가며, 이전에 만들었던 theperz/gugumo-test라는 이름의 이미지를 사용, depends_on을 사용하여 해당 컨테이너 이전에 올릴 컨테이너를 정한다.

 

  test-redis:
    image: redis
    restart: always
    ports:
      - "6379:6379"
    networks:
      - doc-net
    volumes:
      - ./redis-data:/data

redis 관련 정보이다. 사용하는 컨테이너 간 데이터를 공유해야 하므로 volumes를 설정해준다.

 

  test-postgres:
    image: postgres:17
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: gugumo
    networks:
      - doc-net

postgres 관련 정보이다. volume, 환경 변수를 지정해주고, 마찬가지로 doc-net에 연결해준다.

 

해당 파일을 놓고 docker compose up -d --build를 입력하면 해당 컨테이너들을 실행시킬 수 있다.

잘 실행되는 것을 확인할 수 있다.

'Docker' 카테고리의 다른 글

Trouble Shooting: 배포 시 env 관리하기  (0) 2024.12.30
Docker CI/CD 진행하기  (1) 2024.12.28
Hello Docker! : 프로젝트 EC2에 배포해보기  (2) 2024.11.02