본문 바로가기
CI | CD

[Docker] 도커 컴포즈(docker-compose) 파일 작성하기 - 실습편

by ♡˖GYURI˖♡ 2024. 7. 11.
728x90

 

위 영상을 바탕으로 정리한 글입니다!

 

 

docker-compose.yml

services:
  aroundhub_db:
    image: mariadb:10.6
    container_name: db_master
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: imgyuri0517!!
      MARIADB_DATABASE: springboot
      MARIAB_USER: imgyuri
      MARIADB_PASSWORD: imgyuri0517!!
    volumes:
      - ./master_db/data:/var/lib/mysql
      - ./master_db/config/:/etc/mysql/conf.d
    ports:
      - "3308:3306"
    
  aroundhub_redis:
    image: redis:7.0.0
    restart: always
    ports:
      - "6380:6379"

 

 

docker-compose-custom.yml

services:
  aroundhub_db:
    image: mariadb:10.6
    container_name: db_master
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: imgyuri0517!!
      MARIADB_DATABASE: springboot
      MARIAB_USER: imgyuri
      MARIADB_PASSWORD: imgyuri0517!!
    volumes:
      - ./master_db/data:/var/lib/mysql
      - ./master_db/config/:/etc/mysql/conf.d
    ports:
      - "3309:3306"
    
  aroundhub_redis:
    image: redis:7.0.0
    restart: always
    ports:
      - "6381:6379"

 

 

docker-compose up

 

위 명령어를 cmd에 입력하면 아래와 같이 Running 이라는 화면이 보일 것이다.

 

다시 Docker Desktop으로 돌아가서 Container를 확인해보자.

 

방금 docker-compose.yml 파일에 설정해주었던 설정대로 container들이 생성되어 있다.

하지만 뭔가 이상해서 확인해보니 db_master라는 MariaDB가 생성만 되고 Running 중이 아니었다.

다시 cmd 창을 보니 3307 포트가 이미 사용 중이라 충돌이 났다고 한다.

 

[Error] 도커 컨테이너 생성시 포트 충돌

docker Error invoking remote method 'docker-start-container': Error: (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0

velog.io

 

MariaDB를 여러 번 깔면서 3307 포트도 설정해주었던 모양이다.

쉽게 해결하고 싶어서 yml 파일의 포트 번호를 3307이 아닌 다른 번호로 바꿔주었다.

 

제대로 돌아가는 것을 확인할 수 있었다.

-d 옵션을 붙이지 않아 로그가 전부 찍히고 있다.

 

 

Docker Desktop에서 포트 번호를 확인해보면 두 개의 yml 파일 중 docker-compose.yml이 실행되었다는 것을 알 수 있다.

이번엔 docker-compose-custom.yml을 띄워보기 위해 방금 생성된 container는 전부 지워준다.

 

 

docker-compose -f docker-compose-custom.yml up

 

포트 번호를 보면 docker-compose.yml이 아닌 docker-compose-custom.yml이 실행되었다는 것을 알 수 있다.