[ERROR] docker compose 실행 과정 trouble shooting

SCY·2023년 8월 16일
0

error

목록 보기
3/3
post-thumbnail
docker-compose up

docker-compose를 실행하는 과정에서 발생한 에러를 정리해보자.

📌 PORT 중복 에러

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

위 에러가 발생했다. MySQL 포트 번호를 3306으로 설정한 상황이었고, 어디선가 3306을 이미 사용했다고 말한다.

해결하기

  1. 관리자 권한 cmd에서 netstat -ano | findstr :3306 입력
    • LISTENING -> 사용 중임을 확인할 수 있다.
  2. 3306 포트를 사용하고 있는 가장 오른쪽에 위치한 pid 확인
    • 나의 경우 8360
    • tasklist | findstr 8360으로 프로세스도 확인 가능
  3. 관리자 권한 cmd에서 taskkill /f /pid 8360 입력
  4. 도커 재시작

📌 ./gradlew unknown

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./gradlew": stat ./gradlew: no such file or directory: unknown

./gradlew 파일을 찾을 수 없다고 한다. 분명히 있는데..

해결하기
./wanted:/wanted./:/wanted로 바꿔주기
그냥 volumes 값을 잘못 입력한 거 였다 하하

📌 런타임 에러

끝인 줄 알았으나..

localhost:8080에 접속을 시도하면 실패했다. 로그를 확인해보니 크게 세 가지의 에러를 발견했다.

  1. com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
  2. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  3. Caused by: org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution

이들이 항상 함께 등장했다.

volumes를 절대경로로 바꾸어보고 mysql config 파일을 추가해보고 build도 새로 해보고.. 이것저것 다 해봤다. 심지어는 어떤 경우에는 성공했다가 동일한 조건의 다른 경우에는 되지 않기도 했다.

해결해놓고 보니 이렇게 이것저것 다 해보려고 한 게 독이었다.

반포기 상태로 기다리고 있는데
초반에는 에러가 수없이 뜨다가
점점 차분해지더니 결국 서버 접속에 성공했다.

내가 끝까지 기다리지 않고 에러를 쏟고 있는 상황을 벗어나려고 한 것이 문제였다.

최종적으로 서버에 접속하기 위한 명령어는 아래와 같다.

./gradlew build -x test
docker-compose build
docker-compose up

결과적으로, 나의 코드에는 문제가 없었고, 그냥 기다리면 되었던 것.

오늘의 교훈 : 기다려

profile
성장 중독 | 서버, 데이터, 정보 보안을 공부합니다.

1개의 댓글

comment-user-thumbnail
2023년 8월 16일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기