작성
·
23
0
안녕하세요.
크롬에서 프로그램을 열 수 없습니다. (11:00)
https://github.com/bohuiKang/portfolio_bohui
아래에 에러 메시지입니다. 어떤 부분이 문제인지 찾지 못했습니다..
어디가 문제인지 알 수 있을까요?
2024-12-12 18:14:04 2024-12-12T09:14:04.434Z INFO 1 --- [nio-8080-exec-8] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2024-12-12 18:14:04 2024-12-12T09:14:04.434Z WARN 1 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08S01
2024-12-12 18:14:04 2024-12-12T09:14:04.434Z ERROR 1 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Communications link failure
2024-12-12 18:14:04 2024-12-12 18:14:04 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
2024-12-12 18:14:04 2024-12-12T09:14:04.436Z WARN 1 --- [ main] o.h.e.j.e.i.JdbcEnvironmentInitiator : HHH000342: Could not obtain connection to query metadata
2024-12-12 18:14:04 2024-12-12 18:14:04 org.hibernate.exception.JDBCConnectionException: unable to obtain isolated JDBC connection [Communications link failure
...
2024-12-12 18:14:04 2024-12-12T09:14:04.574Z WARN 1 --- [ main] org.hibernate.orm.deprecation : HHH90000025: MySQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
...
2024-12-12 18:14:21 2024-12-12T09:14:21.680Z WARN 1 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08S01
2024-12-12 18:14:21 2024-12-12T09:14:21.680Z ERROR 1 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Communications link failure
2024-12-12 18:14:21 2024-12-12 18:14:21 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
2024-12-12 18:14:21 2024-12-12T09:14:21.742Z INFO 1 --- [nio-8080-exec-1] c.b.p.a.advice.AdminApiControllerAdvice : Could not open JPA EntityManager for transaction
2024-12-12 18:14:21 2024-12-12 18:14:21 org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction...
답변 2
0
안녕하세요 정보근입니다:)
올려주신 로그를 보면 Communications link failure라는 메시지가 확인되는데요.
MySQL에 연결하려고 했으나 정상적으로 커넥션이 성립되지 않은 것으로 보입니다.
추정 가능한 원인은 여러가지가 있는데, 몇가지 말씀드릴테니 확인해주세요.
application-docker.yml에서 mysql URL에 오타가 없는지 확인한다.
MySQL 도커 컨테이너가 실행 중인지 확인한다.
docker-compose.yml 파일에서 컨테이너의 포트 정보를 3306:3306으로 세팅했는지 확인한다.
docker-compose의 컨테이너 이름과 application-docker의 URL 정보가 맞는지 확인한다. 예를 들어 컨테이너 이름이 "mydb"라면 url은 jdbc:mysql://mydb:3306과 같이 되어야 한다.
이 정도 사항을 확인해보시면 될 것 같습니다.
참고로 올려주신 깃허브 소스의 application-docker를 보니 3307 포트로 지정해두셨는데요.
이 경우 docker-compose.yml에서는 3307:3306으로 설정해야 연결이 될 겁니다.
혹은 application-docker의 mysql 정보를 3306 포트로 변경하거나요.
간단히 설명하자면 로컬 컴퓨터의 포트와 도커 컨테이너의 포트를 연결해주는 설정입니다.
컨테이너 내부에서는 3306 포트에서 mysql이 실행되고 있는데,
이 컨테이너의 3306 포트를 로컬호스트의 3307 포트와 연결해줘야
사용중인 컴퓨터에서 3307 포트를 통해 도커 컨테이너의 3306 포트로 접속할 수 있습니다.
감사합니다.
안녕하세요 제가 답변이 늦었습니다.
설명을 잘못 드린 부분이 있습니다.
앞서 3307:3306으로 설정했으니 datasource.url의 포트를 3307로 해줘야 한다고 했었는데요.
만약 포트폴리오 프로젝트를 로컬호스트에서 실행시켜서 MySQL 컨테이너에 접속하려는거면 이게 맞습니다.
MySQL 프로세스는 MySQL 도커 컨테이너의 3306 포트에서 실행이 되고 있고,
이 3306 포트를 로컬호스트의 3307 포트와 연결시켜주는 것이거든요.
그래서 로컬호스트에서 도는 포트폴리오 프로젝트는 같은 로컬호스트의 3307 포트로 접속해야,
거기 연결된 도커 컨테이너 3306 포트의 MySQL 프로세스에 접속합니다.
다만 지금 케이스는 포트폴리오 또한 도커 컨테이너로 돌고 있습니다.
그리고 도커 컴포즈를 통해 포트폴리오와 MySQL 컨테이너를 같이 실행시켰는데,
이럼 도커 컴포즈에서 기본적으로 두 컨테이너가 같은 네트워크를 공유하게 해줘요.
즉 포트폴리오 컨테이너에서는 mysql:3306 포트를 통해 mysql 컨테이너의 3306 포트에서 돌고 있는 mysql 프로세스에 접속 가능한 것입니다.
(글로 설명하니 잘 전달이 될지 모르겠네요. 도커 네트워크에 대해 별도로 찾아보시거나, 추가로 댓글 달아주시면 제가 그림 그려드릴게요)
제가 프로젝트 받은 뒤 컨테이너로 둘 다 실행해서 확인 후 말씀드리는거니
jdbc:mysql://mysql:3306/portfolio로 url 변경해주면 잘 될 것 같네요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. river_bori님.
프로젝트를 Docker로 실행할 때 크롬에서 열리지 않는 문제는 주로 데이터베이스 연결 오류로 인해 발생할 수 있으며, 제공하신 로그를 기반으로 몇 가지 점을 유추할 수 있습니다.
Communications Link Failure: 해당 에러는 데이터베이스(MySQL 등) 서버와의 연결이 실패했음을 나타냅니다. 이는 데이터베이스가 실행 중이지 않거나, 애플리케이션에서 데이터베이스에 연결할 수 있는 네트워크 경로가 없기 때문일 수 있습니다.
포트 확인: Docker Compose 설정 파일(docker-compose.yml)을 확인하여 MySQL 설정이 올바르게 되어 있는지, 포트가 열려 있는지 확인해보세요. 일반적으로 MySQL의 기본 포트는 3306입니다. 외부 네트워크에서 접근 가능한지 확인해야 합니다.
데이터베이스 설정: 애플리케이션의 application.yml
이나 application.properties
파일에 설정된 데이터베이스 URL, 사용자 이름, 비밀번호가 정확한지 확인하세요.
Docker 네트워크 구성: Docker 네트워크가 제대로 구성되어 있지 않거나, 애플리케이션의 Docker 컨테이너가 데이터베이스와 같은 네트워크에 속해 있지 않을 경우, 연결이 거부될 수 있습니다.
DNS 또는 호스트 문제: Docker 환경에서 사용 중인 호스트네임이나 IP 주소가 올바르지 않을 수 있습니다. Docker 네트워크 환경에서 MySQL 서버가 포트에 대해 클라이언트를 허용하고 있는지 확인하세요.
관련 질문을 다룬 기존의 Q&A가 궁금하시다면 다음 링크를 참고하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
dbeaver에서 mysql연결할 때, port를 3306으로 하면 연결이 안되어 3307로 진행했습니다.
application-docker.yml에서 mysql URL에 오타가 없는지 확인한다.
url에서 3307만 변경했습니다.
MySQL 도커 컨테이너가 실행 중인지 확인한다.
docker.desktop 터미널에서 docker ps 명령어로 실행 확인했습니다.
docker-compose.yml 파일에서 컨테이너의 포트 정보를 3306:3306으로 세팅했는지 확인한다.
port를 3307로 변경해서 3307:3306으로 세팅했습니다.
docker-compose의 컨테이너 이름과 application-docker의 URL 정보가 맞는지 확인한다. 예를 들어 컨테이너 이름이 "mydb"라면 url은 jdbc:mysql://mydb:3306과 같이 되어야 한다
docker-compose.yml
application-docker.yml
port 문제인가 싶어 cmd 창에서 3306, 3307을 검색했는데, time wait 등이 없는 걸로 봐선 괜찮은 것 같습니다.
혹시 제가 확인하지 못하고 놓친 부분이 있어서 에러가 나는 걸까요...?