ec2 서버에서 ci/cd로 올린 docker 이미지를 pull 받아 제대로 실행되는지 확인해보고자 한다.
그 전에 ec2 서버에 docker와 redis를 설치하였다.
환경변수 설정
일단 첫 번째로 발생한 문제는 환경변수를 설정해줘야 한다는 것이었다.
ci/cd에서는 깃허브의 secrets에 환경변수 값을 넣어둔 application-prod.yml 파일을 올려둔 후 prod 환경에서 프로그램을 실행하였다.
하지만 ec2에서 실행하니 다시 환경변수를 넣어주는 방법에 대해 고민하게 되었다.
그래서 해결한 방법은 환경변수를 저장한 [프로젝트명].env 파일을 ec2 서버에 저장하여 docker image를 실행할 때 설정해주는 것이었다.
1. ec2서버의 ./[프로젝트명].env 파일을 생성한다.
2. 해당 파일에 다음과 같이 환경변수 값을 넣어 저장해준다.
DB_PASSWORD=DB비밀번호
DB_URL=DB주소
DB_USERNAME=DB사용자명
JWT_SECRET_KEY=JWT의KEY값
3. docker image를 실행할 때 [프로젝트명].env 파일을 환경 파일로 설정해준다.
sudo docker run -i -t --env-file ./[프로젝트명].env [도커이미지명]
DB 오류
그렇게 ec2서버에서 도커 이미지를 실행하자 이번에는 DB에서 오류가 발생하였다.
hikaripool-1 - exception during pool initialization
communications link failure
해당 프로젝트에 연결되어 있는 DB는 AWS의 RDB였는데 보안 관련 오류라고 생각이 들어서
RDB에 들어가서 '연결된 컴퓨팅 리소스'에 EC2 서버를 연결해주었다.
그러자 프로그램이 잘 실행되었다.
'사이트에 연결할 수 없음' 오류
도커 컨테이너를 실행 시킨 후 public ip 주소를 통해 접속해도 사이트에 연결할 수 없음 오류가 발생하였다.
ec2의 보안 그룹에 들어가서 인바운드 규칙을 추가해도 변하지 않았다.
검색해보니 8080 포트가 열려있는지 확인하라고 해서 netstat-ntl 명령어로 확인해보았는데 8080 포트가 열려 있지 않았다.
시간이 좀 지난 뒤에 다시 해보니까 ip주소로 접속이 되었고 8080 포트도 연결되어 있었다.
'TIL' 카테고리의 다른 글
[240128] docker + nginx 무중단배포 구축하기 (0) | 2024.01.28 |
---|---|
[240118] userDetails null 오류 (0) | 2024.01.18 |
[240114] AWS, docker로 수동 배포하기 (0) | 2024.01.15 |
[240113] MapStruct unmapped 오류 수정 (0) | 2024.01.13 |
[240111] Docker image, Docker container (0) | 2024.01.11 |