Docker/Docker 입문

도커 입문 18 - 도커 compose 시작

_Jin_ 2024. 12. 28.

 

 

😎다룰 내용

도커 Compose에 대해서 알아보자.

 

Docker compose?

도커 compose는 다중 컨테이너 도커 어플리케이션을 정의하고 실행하기 위한 도구로, yaml 파일을 사용해서 서비스를 구성한다.

 

지금까지 다룬 docker file을 통해서 인프라를 구축하려면, 백엔드와 DB를 도커 파일로 띄우고 이미지로 만든 뒤에 실행하고 서로 통신하기 위해서 IP/PORT 등의 정보로 다양한 설정을 해줘야한다.

 

꽤나 번거로운 작업이다.

그리고 docker compose는 하나의 파일로 각 docker file을 유기적으로 연결하고 실행까지의 작업을 실행한다.

docker file 단위로 작업하려면 발생하는 번거로운 작업을 획기적으로 줄여주는 것이다. 

 

Docker-Compose로 MySQL 실행하기 

 

docker-compose의 공식 문서에 있는 설명과 함께 앞서 mysql 실습을 통한 감을 익혀보겠다.

이를 위해 docker-compose.yml 파일을 만들고 아래와 같이 스크립트를 작성하였다.

 

services:
  mysqldb:
    image: mysql
    restart: always
    volumes:
      - mysql-docker-volume:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root1234
      - MYSQL_DATABASE=rootdb
    ports:
      - "3307:3306"

volumes:
  mysql-docker-volume:

스크립트가 의미하는 바는 아래와 같다.

 

✅ services는 Docker Compose에서 실행할 컨테이너(서비스)를 정의하는 최상위 키로, 현재는 mysql라는 이름의 서비스가 정의되어 있다.

✅ 이름이 mysqldb인 MySQL 컨테이너의 설정을 정의하기 시작한다. 

✅ image: mysql 는 사용될 Docker 이미지를 지정한다.

✅ restart: always 는 컨테이너가 비정상 종료되거나 서버가 재시작되더라도 자동으로 재시작되도록 설정한다.

✅ volumes: 은 로컬 or 임의의 볼륨과 컨테이너의 특정 디렉토리를 연결하여 데이터를 영구적으로 저장하기 위한 설정

✅ environment:: 컨테이너의 환경변수를 설정하기 위한 명령어

✅ ports: 컨테이너 내부의 네트워크 포드를 호스트 시스템으로 노출하기 위한 설정

✅ volumes 는 컨테이너와 호스트 간의 데이터 공유를 설정하기 위한 값 ( 이름이 있는 볼륨을 지정하기 위한 방법 )

그리고 아래와 같이 해당 컴포즈를 실행한다.

 

그리고 mysqlworkbench에 들어가서 설정에 따라 3307port로 접속하면, 환경 변수로 잡았던 rootdb가 생성되어 있음을 확인할 수 있었다.

 

댓글