티스토리 뷰

모든 코드는 깃허브에 있습니다. 

 

 

Docker Compose없이 컨테이너 실행

Docker Compose가 뭔지 알아보기 전에 간단하게 mysql이미지로 컨테이너를 실행한 후 Spring boot와 연동해보도록 하겠다. 먼저 mysql이미지를 만들어보자. 

 

docker pull mysql

 

이미지를 다운받은 후 컨테이너를 생성하여 실행해보자. 코드는 다음과 같다. 

 

docker run -d -p 13306:3306 --name test_mysql -e MSQL_ROOT_PASSWORD='자신의 mysql 비밀번호' mysql

 

마지막으로 Spring boot와 연동만 하면 끝이다. 연동하는 방법은 간단하다. 

 

datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:13306/'db이름'?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: root
    password: '비밀번호'

 

이번엔 redis를 사용해보도록 하겠다. 컨테이너를 생성한 후 실행할 때 해당 이미지가 없으면 자동으로 다운로드 받고 실행해준다. 

 

docker run -d -p 1234:6379 redis

 

Spring boot와 연동하는 방법은 역시 간단하다. 

 

redis:
    host: localhost
    port: 1234

 

이렇게 내가 원하는 이미지로 컨테이너를 실행할 때마다 각각 해줘야 한다는 점은 상당히 불편하다. 서비스가 커질수록 더 많은 컨테이너들이 실행되고, 많은 컨테이너들을 각각 실행하고 관리하면 힘들다. 이 때, Docker Compose를 사용하면 내가 원하는 컨테이너들을 한꺼번에 실행할 수 있다. 

 

 

Docker Compose란 ?

도커 문서에서는 다음과 같이 정의하고 있다. 

 

 

아까 우리가 했던 방식은 컨테이너를 각각 실행하는 방식이었지만, YAML 파일로 Docker 애플리케이션을 정의하고 실행하기만 하면 일일이 컨테이너들을 실행해주지 않아도 된다. 그럼 Docker Compose를 사용해서 전에 만들었던 mysql과 redis를 동시에 실행해보도록 하겠다. 

 

 

Docker Compose 사용법

 

설명하기 전에 완성된 파일부터 보여주겠다. 

 

version: "3"

services:

  database:
    container_name: mojaty-mysql
    image: mysql
    ports:
      - 13306:3306
    environment:
      MYSQL_ROOT_HOST: "%"
      MYSQL_ROOT_PASSWORD: 비밀번호
      MYSQL_DATABASE: db이름

  cache:
    container_name: mojaty_redis
    image: redis
    ports:
      - 1234:6379

 

YAML 파일은 딱히 다른 설명이 필요없을 정도로 가독성이 좋다. Docker Compose는 아래와 같이 시작한다. 

 

version: "3"

services:
	
    ...

 

...에는 원하는 이미지를 커멘트창에 명령어를 입력한 것처럼 설정해준다. Docker Compose를 실행하는 명령어는 아래와 같다. 

 

docker-compose up
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday