springboot 애플리케이션이 docker에서 실행 중인 SQL 데이터베이스와 연결을 설정할 수 없습니다.
P粉156532706
P粉156532706 2023-08-29 09:43:41
0
1
671
<p>intellij를 Springboot 인스턴스로 사용하고 Xampp의 SQL을 문제 없이 사용하여 localhost에서 실행 중인 프로젝트가 있습니다. 이것은 매우 잘 작동합니다. 하지만 이제는 모든 것을 docker에 배포하고 싶습니다. 그래서 다음과 같이 내 디렉토리에 dockerfile과 docker-compose up 파일을 만들었습니다. </p> <pre class="brush:php;toolbar:false;">-응용 프로그램 | -프런트엔드(아직 docker에 구현되지 않음) -백엔드(springAPI) | -dockerfile -Python(flaskAPI)(아직 docker에 구현되지 않음) docker-compose.yml</pre> <p>docker-compose.yml은 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;">버전: '3.9' 서비스: DB: 이미지: mysql:최신 다시 시작: 항상 환경: MYSQL_ROOT_PASSWORD: <pass> MYSQL_DATABASE:mydb MYSQL_USER: <사용자> MYSQL_PASSWORD: <pass> 포트: - "3306:3306" 볼륨: - ./data:/var/lib/mysql phpmyadmin: 이미지: phpmyadmin/phpmyadmin:최신 다시 시작: 항상 의존: -db 포트: - "8888:80" 환경: PMA_HOST:db MYSQL_ROOT_PASSWORD: 예 스프링 API: 이미지: spring-api:최신 포트: - "8080:8080" 의존: -db 볼륨: DB데이터: mysql-데이터:</pre> <p>springapi의 dockerfile은 다음과 같습니다.</p> <pre class="brush:php;toolbar:false;"># 공식 OpenJDK 런타임을 상위 이미지로 사용 openjdk:17-jdk-slim에서 # 작업 디렉터리를 /app으로 설정합니다. WORKDIR/앱 # 애플리케이션 jar 파일을 컨테이너에 복사합니다. 복사 빌드/libs/backendAPI.jar backendAPI.jar # 애플리케이션을 실행한다 CMD ["java", "-jar", "backendAPI.jar"]</pre> <p>이것은 docker 및 run 컨테이너로 구성될 수 있습니다. Java Spring Boot는 어떻게 오류를 발생시키고 종료합니까?오류는 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;">`2023-03-06T12:25:37.603Z INFO 1 --- [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - 시작 중입니다. .. 2023-03-06T12:25:38.685Z 오류 1 --- [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - 풀 초기화 중 예외가 발생했습니다. com.mysql.cj.jdbc.Exceptions.CommunicationsException: 통신 링크 실패 서버에 성공적으로 전송된 마지막 패킷은 0밀리초 전입니다. 드라이버가 서버로부터 어떤 패킷도 수신하지 못했습니다.'</pre> <p>다음과 같이 application.settings를 재구성해 보았습니다.</p> <pre class="brush:php;toolbar:false;">spring.datasource.url=jdbc:mysql://localhost:8888/mydb spring.datasource.username=<theusername> spring.datasource.password=<thepassword> spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver</pre> <p>그러나 아무런 효과가 없습니다. 계속 같은 오류가 발생하기 때문입니다. SQL 서버는 주어진 URL을 통해 접근할 수 있습니다. 따라서 잘 실행됩니다(관리자 권한이 없는 것을 제외하고는 다른 문제입니다.) </p> <p>application.settings를 약간 수정한 이 설정은 Xammp와 intellij를 사용할 때 매우 효과적입니다. 그런데 지금은 연결할 수가 없어요. 내가 여기서 무엇을 놓치고 있는 걸까요? </p> <p><strong>지금까지 시도한 내용 편집</strong></p> <pre class="brush:php;toolbar:false;">db: 이미지: mysql:최신 다시 시작: 항상 컨테이너_이름: sql-db</pre> <p>그런 다음 application.settings를 변경하세요: </p> <pre class="brush:php;toolbar:false;">spring.datasource.url=jdbc:mysql://sql-db:8888/mydb (또한 sql-db:3306 포함)</pre> ; <p>하지만 여전히 같은 오류가 발생합니다. </p>
P粉156532706
P粉156532706

모든 응답(1)
P粉510127741

Docker Compose 파일에서 데이터베이스 서비스의 컨테이너 이름을 지정하세요

으아악

그런 다음 jdbc URL에서 구성된 데이터베이스 컨테이너 이름과 데이터베이스 컨테이너의 실제 구성된 포트를 참조해야 합니다.

datasource.url은 다음과 같습니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿