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된 데이터 확인함
'Web Development > Docker' 카테고리의 다른 글
| 도커로 Nginx실행, conf파일 호스트에서 관리 ( 도커 볼륨 ) (1) | 2024.06.21 |
|---|---|
| 도커로 nginx실행하기 01 (0) | 2024.06.21 |
| docker build 에서 "빌드 컨텍스트" (0) | 2024.06.14 |
| 도커로 MySQL 띄우기 (1) | 2024.06.13 |
| SpringBoot프로젝트 도커컨테이너로로 실행하기 (1) | 2024.06.12 |