mysql 컨테이너를 spring-boot 앱 컨테이너와 어떻게 연결할 수 있습니까? 네트워크 사용을 시도한 다음 docker-compose를 시도했지만 스프링 부팅 앱이 연결할 수없는 것 같습니다.
docker-compose.yml
version: '3'
services:
mysql-docker-container:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=my_app
volumes:
- /data/mysql
authenticate:
image: authenticate
build:
context: ./
dockerfile: Dockerfile
depends_on:
- mysql-docker-container
ports:
- "8080:8080"
volumes:
- /data/authentica
application.properties
#cấu hình Spring Datasource, JPA, App Properties
spring.datasource.url= jdbc:mysql://my-docker-container:3306/my_app?useSSL=false
spring.datasource.username= root
spring.datasource.password= root
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.jpa.properties.hibernate,dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto= update
spring.datasource.platform=mysql
spring.datasource.initialization-mode=always
#App
pin.app.jwtSecret = pinSecretKey
pin.app.jwtExpirationMs = 86400000
그런 다음 compose에서 네트워크로 수정합니다.
version: '3'
services:
mysql-docker-container:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=my_app
volumes:
- /data/mysql
ports:
- "3306:3306"
networks:
- "my-network"
authenticate:
image: authenticate
build:
context: ./
dockerfile: Dockeerfile
depends_on:
- mysql-docker-container
ports:
- "8080:8080"
volumes:
- /data/authentica
networks:
- "my-network"
networks:
my-network:
다르지 않아
서비스 이름과 연결 문자열이 다르므로 docker-compose에 정의 된 정확한 서비스 이름 또는 컨테이너 이름을 사용해야합니다.
연결 문자열을 다음으로 변경하십시오.
spring.datasource.url= jdbc:mysql://mysql-docker-container:3306/my_app?useSSL=false
최신 정보:
연결 문자열로 문제가 해결되지 않으면 두 가지 가능한 이유가있을 수 있습니다.
이 경우 depends_on:
문제가 해결되지 않으므로 DB 컨테이너는 연결을 수락하는 데 시간이 걸립니다. wait-for-it으로 무언가를 하거나 애플리케이션 측에서 재시도 로직을 처리 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다