이전에 Docker-compose
없이 멀티컨테이너를 구동했던 설정을 그대로 Docker-compose
에 적용할 것 입니다.
version: "3.7"
services:
db-mysql:
image: mysql:5.7
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: user
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
ports:
- 3306:3306
networks:
- springboot-mysql-net
test-app:
build:
context: ./
dockerfile: Dockerfile
ports:
- 8080:8080
depends_on:
- db-mysql
networks:
- springboot-mysql-net
networks:
springboot-mysql-net:
driver: bridge
Docker-compose
는 services
밑에 여러 컨테이너들을 가질 수 있습니다. 여기서 생성되는 컨테이너들은 기본적으로 같은 네트워크에서 구동되게 됩니다.(default network)
하지만 이전에 했던 예제와 아예 동일하게 하기 위해 네트워크도 설정해주었습니다.
하나씩 자세히 볼께요.
db-mysql
mysql
을 컨테이너로 구동시키기 위한 설정입니다.
mysql
구동시 필요한 환경변수 설정test-app
springboot
를 컨테이너로 구동시키기 위한 설정입니다.
Dockerfile
은 Dockerfile-dev
혹은 Dockerfile-prod
등 개발환경과 운영환경에서 쓰이는 이름이 다를 수 있기 때문입니다.db-mysql
컨테이너에 의존한다는 의미인데 여기서 의존은 반드시 db-mysql
컨테이너가 구동된 후에 test-app
컨테이너를 구동시키겠다는 의미입니다. networks
이전 예제와 동일하게 네트워크를 구성하였습니다.
docker-compose up
or docker-compose up -d
서버가 정상적으로 구동되어 로컬에서 접근이 가능합니다.
또한 ps
명령어로 구동중인 컨테이너를 보면 mysql
과 springboot
두 개 컨테이너가 구동되는 것을 확인할 수 있습니다.
컨테이너 중지
docker-compose down