저번에 다한줄 알았는데,,
저번 포스트마지막 사진에 보면 status 가 exited가된걸 확인할 수 있다.
실패한거다..
docker logs {컨테이너명}
해서 보니, 내 환경변수였던 {JWT_SECRET_KEY}를 못찾아서 오류가 났던 것이었다.
환경변수.. 어떻게 넣을까?
touch /home/ec2-user/app.env
EC2 인스턴스에서 app.env라는 파일을 하나 만들어준다.
그다음, app.env 파일을 편집기로 수정한다. 나는 nano를 썼다.
nano /home/ec2-user/app.env
app.env파일에
JWT_SECRET_KEY=your_secret_key_here
이렇게하고 저장한다.
하지만, 이렇게 했을때도 안됐다..
다음방법을 알아보자.
.bashrc 를 nano 편집기를 사용해서 마지막에 환경변수를 집어넣어준다.
nano ~/.bashrc
맨 마지막 줄에
export JWT_SECRET_KEY=jwt.secret.key.value
이렇게 넣고, docker start {컨테이너 아이디}
하고 docker ps 해보면 실행중인 컨테이너가 나온다.
어디한번 해볼까?
...그만 알아보도록 하자
다른 방법도 있다.
바로 run할때, 환경변수를 저장한 파일을 함께 지정하는것이다. 그러면 컨테이너 안에서 사용할 수 있을거다..(제발)
나는 위에서 app.env파일을 만들었기 때문에 아래와 같은 명령어를 입력해보자.
docker run -d --env-file env_file.txt your-image-name
그전에 기존 컨테이너를 중지하고 삭제한다.
# 기존 컨테이너를 중지(stop)합니다.
docker stop knockknock
# 기존 컨테이너를 삭제(remove)합니다.
docker rm knockknock
그러면 이렇게 삭제된걸 볼 수 있다.
그리고 이미지도 삭제하고 다시 빌드를 해본다.
이미지 삭제하는 명령어는 docker rmi {이미지명}
dockerfile에
# app.env 파일을 이미지 안에 복사
COPY app.env /app/app.env
이걸 추가하고, 빌드하고 다시 git push하자.
그리고 다시 클론받고, dockerfile이 있는 위치로 가서 build 해본다.
역시 에러!
에러를 보면 app.env 파일을 못찾는다고 한다.
그러면 app.env파일을 dockerfile 이 존재하는 위치에 복사해준다.
그 다음에, 전에 했던대로 build 해주고, run 해준다.
하.지.만.
안된다! 여전히 환경변수를 못 찾는다.
찐찐막으로 다시 해보자!!
드디어. 됐다!!!!!!!!!!!!!!!!!!!
docker ps 누르기전에 기도 쎄게했더니 됐다.
방금만든 컨테이너 지우고,
docker run -d -p 8080:8080 --env-file app.env knockknock
--env-file 옵션을 사용해서 드디어드디어드디어 됐다. 이거 안돼서 요며칠 기분이 다운되어있었는데 기분이매우 좋아졌다.
또다시 반전이 일어났다.
docker logs {컨테이너이름}
하면 애플리케이션이 잘 실행된게 확인된다.
하지만. 포스트맨으로 잘 실행되는지 보려고 테스트를 해봤다.
EC2 인스턴스의 퍼블릭 Ipv4 DNS 주소:포트번호 로 api요청을 날렸는데 timed out이 뜬다...
아!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
기분이 좋다가 말았다.
다음 포스팅에 이어서 써보겠다. 제발 해결하고싶다. 미치겠다ㅠㅠ
'프로젝트 > 낙낙(KnockKnock)' 카테고리의 다른 글
배포를 해볼까-7(성공) (0) | 2023.07.24 |
---|---|
배포를 해볼까-6 (0) | 2023.07.24 |
배포를 해볼까-4 (0) | 2023.07.18 |
배포를 해볼까-3 (0) | 2023.07.17 |
배포를 해볼까-2 (0) | 2023.07.14 |