기분 좋게 docker swarm으로 배포를 하려고 하는데, 문제가 발생했다.
WAS 의 한 환경변수가 등록이 안되는것이었다!
그래서 두시간동안 삽질을 했다. 참고하길 바라며 글을 남긴다.
1. Docker Stack 에서는 .env를 지원하지 않는다.
Docker Stack 에서는 .env를 지원하지 않는다. 그러니까, 우리가 흔히 하는 다음과 같은 사용이 되지 않는다는 것이다.
ports:
- "${PORTS}:8000"
그렇다. 만약 이런 상태로 실행하게 된다면, 해당 부분은 그냥 빈것으로 처리되어 실행된다.
그렇다면 어떻게 해야 할까? 답은 env_file 이다. 서비스 안에 env_file을 정의함으로써 .env 파일을 사용 할 수 있는데, 이는 다음과 같이 사용하면 된다.
services:
was:
container_name: "was"
env_file:
- .env
2. Docker Stack 의 env-file은 띄어쓰기가 있는 문자열 값을 다루지 못한다. 절대.
Docker Stack 의 env-file은 띄어쓰기가 있는 문자열 값을 다루지 못한다. 이것 때문에 두시간을 썼다.
만약 .env 파일이 다음과 같다고 해보자.
DB_URI=host=localhost port:5432
만약 이렇다면 DB_URI 는 사용하지 못한다. 그냥 없는것으로 처리된다.
따옴표로 감싸고, 띄어쓰기 앞에 \ 를 두어도, 뭔짓을 해도, env_file로 사용되는 파일은 저런 모든 설정이 먹히지 않는다. 이 링크를 참고하자.
그냥 안된다... 이와 같은 문제를 보고 하는 사람이 소수있었던것 같은데, {docker swarm + docker stack + env_file + 띄어쓰기 사용}
이 네 조합이 흔하지 않아서인지 그냥 안되더라.
이 문제 때문에 두시간을 가까이 소비했다. 결국에는 그냥 서버 어플리케이션을 수정하는것으로 해결하였다.
'Computer Science' 카테고리의 다른 글
이리치이고 저리치이고. 고난의 CI/CD 구축기 (0) | 2021.03.26 |
---|---|
약빨고 22시간 개발 한 썰(부제: inssa.club 개발기) (0) | 2021.03.23 |
사과를 쓰다 펭귄한테 싸다구 맞은 사연 (맥에서 리눅스로 파일 업로드 시 주의할 점) (0) | 2021.03.04 |
Redis는 뭐고.. In Memory 솔루션은 뭐야? (0) | 2021.02.25 |
Nginx 리버스 프록시를 사용하여 배포 할 때 해야 할 것들 (0) | 2021.02.22 |