Github Actions는 성공적으로 끝났는데 docker 컨테이너가 실행되지 않습니다.
ci/cd가 끝난 후 ec2에서 docker ps 명령어를 쳤는데 컨테이너가 실행되지 않습니다. docker ps -a 명령어로 보니 status 가 Exited로 나오네요.
ec2 사양은 t2micro 로 했는데 이 영향이 있을까요?
답변 1
0
안녕하세요 happycoding님!
EC2 자체가 멈추지 않았다면 t2.micro가 영향을 미치진 않은 것으로 보입니다.
docker logs라는 명령어를 활용해 왜 종료되었는 지 로그를 확인해보는 게 좋을 것 같습니다!
로그를 확인했는데도 왜 작동하지 않는 지 파악이 안 되신다면 또 질문 남겨주세요:)
0
빠른 답변 감사드립니다! DB 쪽 문제인 것 같습니다. 에러가 다음과 같습니다.
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: java.net.ConnectException: Connection refused
현재 EC2와 RDS를 이용해서 하고 있고, RDS는 퍼블릭 IP를 할당하지 않고 EC2 보안그룹을 RDS 인바운드 규칙 대상에 추가해서 EC2에서만 RDS에 접속할 수 있게 해놓은 상태입니다.
혹시 이 부분 때문에 DB를 연결하지 못 해서 이런 에러가 발생하는걸까요?
0
DB 연결에 문제가 있는 것 같네요!
연결에 문제를 일으킬 수 있는 경우는 다양하게 존재합니다!
그러다보니 아래 순서로 한 번 시도해보면서 어떤 지점이 문제의 지점인지를 파악하는 게 우선일 것 같습니다.
보안그룹 문제
말씀해주신 인바운드 규칙에는 크게 문제가 없어보이나, 혹시나 보안그룹에 대한 특정 설정이 잘못돼서 발생할 수도 있습니다. 따라서 퍼블릭 IP를 할당하고 보안그룹에 3306을 허용한 채로 RDS가 잘 연결이 되는 지 확인해보시면 좋을 것 같습니다. 만약 연결이 잘 된다면 보안그룹 문제입니다.
Docker 문제
Docker의 네트워크 관련 문제로 DB와 연결이 잘못됐을 가능성이 있으니, Docker를 쓰지 않고 우선 RDS와 연결이 잘 되는 지 확인해보세요. 만약 Docker를 안 썼을 때 연결이 잘 된다면 Docker에서 발생한 문제입니다.
DB 주소 잘못 기재
DB 주소를 정확히 잘 기재했는 지 확인해보셔도 좋습니다. 연결이 잘 이루어지는 지 아래 방법을 활용해 테스트해볼 수 있습니다.
위 3가지 방법을 테스트하신 후 어떤 부분에 문제가 있는 지 확인이 된다면 다시 질문 한 번 남겨주세요~!!
0
친절한 답변 감사드립니다! 재성님께서 답변해주신 내용을 보고 제가 시도해본 것들은 다음과 같습니다.
1. EC2에 접속해서 RDS 로 curl -v telnet://주소 명령어 -> 정상적으로 연결이 확인됩니다.
2. 프로젝트를 빌드한 후에 EC2에 바로 파일질라를 이용해서 배포 후 실행 -> 애플리케이션이 정상적으로 실행이 됩니다. -> 웹에서도 정상적으로 접근이 가능합니다.
두 가지 다 정상적으로 되는 것으로 보아 말씀해주신 도커의 문제가 아닐까 의심이 됩니다.
제 EC2 스펙입니다.
- AMI: ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-20240423
- t2micro
- 나머지는 기본
- 탄력적 IP 할당해놓은 상태
- 보안그룹은 80, 443, 8080, 22 포트를 인바운드 열어놨습니다.
- 퍼블릭 서브넷에 위치시켜놨습니다.
RDS 스펙입니다.
- mysql
- 퍼블릭 엑세스 허용 X
- EC2가 위치한 vpc 내에 프라이빗 서브넷을 두어 위치시켰습니다.
- 별도의 보안그룹을 두었습니다. (대상은 ec2 보안그룹으로 해놨고, 3306 포트를 열어두었습니다.)
도커 및 도커 컴포즈 설치는 강의를 보며 제공해주신 자료의 명령어로 수행하였습니다.
도커 버전: Docker version 26.1.3, build b72abbb
도커 컴포즈 버전: Docker Compose version v2.27.0
도커에서 오류가 나는 것 같은데, 이럴 때는 어떻게 접근을 하면 좋을까요? 😭
--- 추가
rds를 새로 만들어서 아예 별도의 vpc에 새로운 서브넷에 생성하고 퍼블릭 엑세스까지 허용하고 ci/cd 를 다시 돌려봤는데 도커 컨테이너는 실행이 되다가 바로 꺼져버리네요...하핫 진짜 어렵네요ㅠ
--- 해결
전혀 엉뚱한 곳에 문제가 있었는데 이상한데를 삽질하고 있었네요 ㅠ 프로필을 환경에 따라 구분하고 있었는데 도커파일에서 ENTRYPOINT에 프로필을 넣어서 java -jar 를 해줘야 하는데 그걸 빼먹고 있어서 application.yml을 읽어들이지 못 해서 커넥션을 획득하지 못 했던 거 같아요!
재성님 친절한 답변 너무 도움 많이 됐습니다. 감사합니다!
1
해결하셨다니 다행이네요😊
어떤 게 문제였고 어떻게 해결하셨는 지도 공유해주셔서 감사합니다!
혹시나 비슷한 문제를 겪고 있으신 분들한테 큰 도움이 되겠네요ㅎㅎ
다음에 또 궁금한 점 생기시면 질문 남겨주세요~~
무중단 배포
0
57
2
workflows/deploy.yml 궁금증
0
52
2
.git-credentials 파일이 없이 배포가 성공한 이유가 궁금
0
57
1
(해결 - 정보공유) /home/runner/work/_temp/6be6e~0.sh: line 1: ./gradlew: Permission denied 오류
1
63
2
(확인 완료) git config --global creadential.helper store 후에도 비밀번호 물어보는 현상
1
71
2
질문_ 강의 순서 및 그외
0
70
2
섹션 4 - Docker + 백엔드(Spring Boot)
0
63
2
deploy.yml작성후 원격에 push불가
0
63
2
CodeDeploy 사용시 registration 요구
0
106
3
스프링 종료 명령어
0
68
2
RAM & 스왑메모리 폭증하는 문제
0
102
2
섹션 4, 5와 6, 7은 유사한가요?
0
66
1
code deploy 배포입니다.
0
98
3
사용자 삭제가 안되는 이유
0
87
2
이미지 pull중 no basic auth credentials 문제입니다.
0
113
2
Docker Compose파일을 작성했을때 CI CD와의 연동
0
96
2
보안그룹 생성 오류
0
84
3
AWS 5월에 탈퇴해서 그러는데....
0
81
1
배포 오류
0
80
2
node.js 설치시 에러
0
149
2
appspec.yml, 스크립트 파일 수정요청
0
82
2
appleboy/ssh-action stop_script 대체
1
181
2
Vue.js 파일 배포
0
61
2
aws를완강하고 ci/cd로 넘어왔습니다.
0
85
1





