docker-compose networks를 사용해서 로컬에서 간편하게 개발하기

2025. 2. 22. 05:27Docker

사용 이유

  1. 여러 종류의 DB Volumes의 데이터를 한 곳에서 관리하기 위함
  2. 같은 DB를 각각의 서버가 동일하게 바라보기 위함
  3. 간단하게 실행 및 관리를 쉽게 하기 위함

사용 방법

  1. docker-compose.yml, shart.sh 파일을 생성
  2. shart.sh파일을 실행시킨다.

파일 생성

참고

  • volumes를 설정 할 때 도커 컨테이너에 저장되는 위치를 DB마다 정확하게 지정해주어야 데이터가 사라지지 않는다.
  • DB 마다 저장되는 위치가 다르니 확인해주어야한다.

docker-compose.yml 파일

# docker-compose.yml
services:
  mysql:
    image: mysql:8.1
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root1234
      MYSQL_DATABASE: testdb
      MYSQL_USER: user
      MYSQL_PASSWORD: p1234
    ports:
      - "3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - backend

  postgres:
    image: postgres:17.2
    container_name: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: p1234
      POSTGRES_DB: testdb
    ports:
      - "5432:5432"
    volumes:
      - ./postgres:/var/lib/postgresql/data
    networks:
      - backend

  mongo:
    image: mongo:8.0
    container_name: mongo
    ports:
      - "27017:27017"
    volumes:
      - ./mongo:/data/db
    networks:
      - backend

networks:
  backend:
    external: true

 

start.sh 파일

# start.sh
docker network create backend
docker-compose up

 

실행

 

명령어 실행

sh start.sh

 

 

명령어를 실행하면 활성화한 DB가 실행된다.

 

서버에서 활성화된 DB를 연결하려면 network를 연결해주고 docker-compose를 실행시킨다.

 

ex) docker-compose 예시 파일

services:
  app:
    build:
      context: .
      dockerfile: ./Dockerfile
    env_file:
      - ./config/.env
    ports:
      - '3000:3000'
    command: pnpm run start:debug
    volumes:
      - ./:/app/
      - /app/node_modules
    networks:
      - backend

networks:
  backend:
    external: true

 

728x90
반응형