1. Doker에서 Springboot, Mysql 연동하기
- Doker에서 Springboot,Mysql을 연동하여 배포하면 각각의 컨테이너가 필요
- 여기서는 브릿지 네트워크(bridge network)를 생성하여 사용하는 방법
- Doker의 기본 네트워크 모드가 브릿지 네크워크
- Doker 네트워크 생성 -> springboot 이미지, mysql 이미지를 해당 네트워크를 통해 실행하여 컨테이너를 생성
2. Docker network 생성
// 터미널에서
docker network create <네트워크이름>
// 예시) 'docker-network' 입력
// 생성 후 확인용 -> 네트워크 목록 확인
docker network ls
- 네트워크 생성 -> Mysql, Springboot 컨테이너를 해당 네트워크 묶어주면 됨
- 그전에 mysql 이미지와 springboot 이미지 생성
3.Mysql Docker image 다운로드
// 터미널
docker pull mysql:8.0
// 터미널 입력 -> 다운받은거 확인
docker images
4. Mysql docker 컨테이너 생성
// 터미널 명령어 입력
docker run -d --name mysql-container --network docker-network -e MYSQL_ROOT_PASSWORD=1111 mysql:8.0
- 'mysql-container' : 본인이 설정
- MYSQL_ROOT_PASSWORD : 본인이 설정
- myslq:8.0 : 이거는 아까 다운로드받은 이미지
- 'mysql-container' 라는 이름으로 network는 위에서 생성한 docker-network를 사용하며, mysql 비밀번호로는 1111로 설정한다 (이런의미)
// 명령어 -> 다운로드 진행상황 알 수 있음
docker ps
// 이후 실제 해당 컨테이너가 위에서 생성한 docker-network에 속하는지 확인하는 방법
docker network inspect docker-network
5. Mysql DB 생성
url: jdbc:mysql://localhost:3306/memo
- 연습할때 DB 이름
- 도커의 Mysql에는 해당 DB가 없어서 생성해야 함
// 터미널 명령어 입력
docker exec -it mysql-container mysql -u root -p
#아래의 메시지가 나오면 아까 생성할 때 입력한 비밀번호 입력
Enter password:
# 비밀번호 입력 후 mysql> 글자가 보이며 접속이 된것이 확인됨
mysql> create database memo;
Query OK, 1 row affected (0.12 sec) 메시지가 나오면 성공
- 'mysql-container' -> 본인이 위에서 설정한 이름으로 입력
6. application.yml 파일 수정
- 위에서 만든 'mysql-container'와 연동하기 위해 yml 파일 해당 부분 수정
// 연습한 yml 파일 첨부
spring:
datasource:
url: jdbc:mysql://mysql-container:3306/memo // 여기부분 수정해야함
username: {username}
password: {password}
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
use_sql_comments: true
logging:
level:
org:
springframework:
security: DEBUG
web: DEBUG
// 수정하기 전
url: jdbc:mysql://localhost:3306/memo
// 수정 후
url: jdbc:mysql://mysql-container:3306/memo
7. Dockerfile 생성
FROM amazoncorretto:17
WORKDIR /app
COPY build/libs/*.jar board-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-jar", "board-0.0.1-SNAPSHOT.jar"]
- root 파일에 생성
- 연습한 dockerfile 첨부
- 개인 환경에따라 jar 파일명이 다르고, 생성갯수도 다른걸로 암(이건 아직 정확하게 모름)
8. springboot 이미지 생성 후 실행
- jar 파일생성
// 1. jar 파일생성
// 2. 명령어 입력 -> 본인이 설정
docker build -t board-image .
// 3. 위에 생성한 방법과 같은 방식으로 네트워크 옵션 주기
docker run -d --name board-container --network docker-network -p 8080:8080 board-image
// 4. springboot, mysql 컨테이너가 생성한 네트워크에 속하는지 확인
// docker-network -> 본인이 설정한 이름
docker network inspect docker-network
참고 https://tytydev.tistory.com/45
'기록하기' 카테고리의 다른 글
배포 분투기(1) (0) | 2023.11.11 |
---|---|
Docker compose + Springboot + Mysql 연동하기(2) (0) | 2023.11.11 |
Day + 26 (0) | 2023.11.10 |
나를 위한 swagger 사용법2 (0) | 2023.11.10 |
Day + 23 (0) | 2023.11.07 |