찾다

 >  Q&A  >  본문

springboot 애플리케이션이 docker에서 실행 중인 SQL 데이터베이스와 연결을 설정할 수 없습니다.

<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粉156532706P粉156532706483일 전697

모든 응답(1)나는 대답할 것이다

  • P粉510127741

    P粉5101277412023-08-30 00:12:12

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

    으아악

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

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

    으아악

    회신하다
    0
  • 취소회신하다