본문 바로가기
Web Development/Docker

도커로 SpringBoot + MySQL 띄우기

by doriver 2024. 6. 14.

Docker의 브릿지네트워크( bridge network )를 생성한 뒤 
spring boot 이미지와 mysql 이미지를 해당 네트워크를 통해 컨테이너를 실행

 

1.docker network 생성

docker network create <네트워크 이름>

first-network로 만듬

docker network ls

로 docker 네트워크 목록 확인

2. mysql이미지 컨테이너 실행( 해당 네트워크에서 )

FROM mysql:8.0
ENV MYSQL_USER user
ENV MYSQL_PASSWORD user
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE spring_jpa_test

 

: mysql이미지의 빌드컨텍스트

 

docker build -t mysql-image-sp .

 

docker run --name mysql-container-sp --network first-network -d -p 3307:3306 -v C:\dockerTest\mysqlSp01\data:/var/lib/mysql mysql-image-sp

 

--network first-network 넣어줘야함

 

3306포트는 호스트시스템의 mysql이 사용중이여서 
호스트시스템의 3307 포트로 잡아줌

docker network inspect first-network

로 mysql 컨테이너가 생성한 네트워크에 속하는지 확인

 

3. Spring boot 컨테이너 실행( 해당 네트워크에서 )

 

application.properties 파일 수정

#    url: jdbc:mysql://localhost:3306/spring_jpa_test
    url: jdbc:mysql://<mysql-container이름>:3306/spring_jpa_test
username, password 도 mysql이미지에 맞게 세팅

 

mysql컨테이너 실행할때 -p 3307:3306 해줬었지만
컨테이너상에서 포트는 3306이기때문에

 그대로  <mysql-container이름>:3306/spring_jpa_test 해줌

FROM bellsoft/liberica-openjdk-alpine:17
VOLUME /tmp
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

: springboot이미지의 빌드컨텍스트

docker build -t spring-jpa-image .

 

docker run -d --name spring-jpa-container --network first-network -p 8080:8080 spring-jpa-image

--network first-network 넣어줘야함

docker network inspect first-network

 

로 spring boot, mysql 컨테이너가 생성한 네트워크에 속하는지 확인

 


4. 브라우저에서 확인

SpringBoot 컨테이너 실행하니까
jpa의해 mysql컨테이너 db에 테이블이 생김 ( entity 클래스에 매핑되는 )

 

 

브라우저에서 http://localhost:8080/ 로 접근( springBoot컨테이너 실행할때 -p 8080:8080 였음 )


브라우저에서 insert, select요청 성공
db에서도 insert된 데이터 확인함