1. docker-compose
- docker-compose란 여러개의 docker-container를 쉽게 관리하고 실행하기 위한 도구
- docker-compose를 사용하면 따로 네트워크를 생성하여 두 컨테이너를 포함 시키는 작업을 하지 않아도 됨
- 자동으로 브릿지 네트워크가 생기고 두 컨테이너는 해당 네트워크에 종속됨
2. docker-compose 설정 파일 작성
version: '3.8'
services: # 컨테이너
db:
image: mysql
container_name: mysql-container2
environment:
MYSQL_ROOT_PASSWORD: {password}
MYSQL_DATABASE: {DB name}
ports:
- "3307:3306"
command: --init-file /docker-entrypoint-initdb.d/init.sql
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
spring-boot-app:
image: board-image-compose
container_name: board-container
ports:
- "8081:8081"
links:
- db
depends_on:
- db #spring-boot-app
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/memo
- SPRING_DATASOURCE_USERNAME={username}
- SPRING_DATASOURCE_PASSWORD={password}
- service : 해당 compose에 컨테이너 지칭
- db : 첫 번째 컨테이너인 'mysql-container'를 db라는 이름으로 표시
- image : mysql 이미지를 사용하며, 미리 생성해 놓은 mysql 이미지를 사용(없으면 hub 다운로드)
- container_name : compose up을 통해 생성될 mysql container 이름을 명시
- environment : 해당 container의 환경 설정 값을 명시
- command : 해당 container가 생성되면서 실행할 명령을 설정하는 것 (여기서 연습용으로 memo라는 DB 생성하기 위해사용)
init.sql 파일 안에 'create database memo;'라는 sql 명령어를 작성 -> root 폴더에 저장 - volumes : 위에서 springboot 안에 있는 init.sql 파일을 컨테이너 내부 경로로 복사 -> 컨테이너 내부에서 해당 파일 실행
- spring-boot-app : 두번째 컨테이너인 spring-boot container를 'spring-boot-app'이라는 이름으로 표시
- links : 위에서 생성한 DB 컨테이너와 연결 설정
- depends_on : 위에서 생성한 DB 컨테이너와 의존 관계를 맺어 DB 컨테이너가 먼저 실행한 뒤 board-container가 실행 되는데, 중요한 것은 시작 순서만 보장하고 끝나는 시점이 보장 되지 않아 문제가 생길 수 있음
3. 컨테이너 실행 순서 컨트롤 하는 법
- 위에서 작성한 세팅으로 'docker compose up' 을 실행하면 mysql container 설정이 끝나기 전에 springboot container가 실행되면서 DB 커넥션 에러가 발생
- mysql 컨테이너를 먼저 실행 -> springboot 컨테이너 실행 (컨테이너 이름 옆에있는 실행표시 각각 사용 - 인텔리제이 기능)
4. docker-compose 실행 확인
- docker-compose를 실행했으면, 두 컨테이너가 동일 네트워크에 포함되는지 확인
// 명령어 입력
docker network ls
- '프로젝트명_default' 이름의 네트워크가 생성된 것이 확인되고, 해당 이름을 통해 상세 조회
// 명령어
docker network inspect <본인파일명>
- 잘 만들어진거 확인하고 -> Swagger로 동작 실험까지 완료
참고 https://tytydev.tistory.com/46
Docker compose Spring boot ,mysql 연동 방법
HTML 삽입 미리보기할 수 없는 소스 1. docker-compose 란 docker-compose란 여러 개의 docker-container를 쉽게 관리하고 실행하기 위한 도구이다. 해당 글에서는 spring boot와 mysql을 연동하기 위해 docker-compose를
tytydev.tistory.com
'기록하기' 카테고리의 다른 글
배포 분투기(2) (0) | 2023.11.11 |
---|---|
배포 분투기(1) (0) | 2023.11.11 |
Springboot + Mysql + Docker 연동하기 1 (0) | 2023.11.10 |
Day + 26 (0) | 2023.11.10 |
나를 위한 swagger 사용법2 (0) | 2023.11.10 |