aws에 올라간 ip로 요청을 보내도 계속 403이 뜨고,
spring boot에 로그가 뜨지 않아 이상하다고 생각하던 중 ec2 내 프로젝트 코드를 직접 보다가 이상함을 느꼈다.
github actions로 CI/CD 연결을 했고, push 후 성공적으로 build, develop 모두 성공했는데 ec2에 최신 코드 반영이 안되고 있었다.
그래서 docker images와 docker ps를 사용해 실행 중인 컨테이너 정보를 봤다.
2일 전에 생성 됐던 image가 실행되고 있었던 것.
이름이 달라서 그런가보다.
Dockerfile과 github actions 설정이 달라서 그런듯.
그래서 github actions에 스크립트가 실행되고 있었는데 해당 이름을 찾지 못해 중지, 삭제, 최신 버전 반영을 못했나보다.
그래서 해당 컨테이너를 중지시키고 삭제하여 최신 버전으로 실행하도록 하였다.
docker stop 컨테이너ID # 현재 실행 중인 컨테이너 중지
docker rm 컨테이너ID # 중지된 컨테이너 삭제
docker run -d --name {새로온 컨테이너 이름} -p 8080:8080 {실행할 도커 이미지}:latest # 최신 이미지로 새로운 컨테이너 실행
docker: Error response from daemon: Conflict. The container name "/dcrw" is already in use by container "27fef9514aa6e970504cae117a20a3466619396ced9f203e18c87ab28f6ff335". You have to remove (or rename) that container to be able to reuse that name.See 'docker run --help'.
하지만 또 이런 에러가 떴는데 ...
이름 충돌 에러였다.
dcrw라는 이름의 컨테이너가 이미 존재해서 동일한 이름을 가진 새 컨테이너를 만들 수가 없다고.
그래서 docker ps -a를 통해 exit 된 컨테이너도 확인해 보니 exit 되어 있는 dcrw 컨테이너가 있었다.
이를 삭제하고 새로운 컨테이너를 실행하면 된다.
docker rm {컨테이너 이름}
docker run -d --name {새로온 컨테이너 이름} -p 8080:8080 {실행할 도커 이미지}:latest # 최신 이미지로 새로운 컨테이너 실행
docker logs dcrw