.env파일에서 DATABASE_HOST=DATABASE_NAME 이라고 정의를 한 뒤,
/etc/hosts파일에서 DATABASE_NAME = '0.0.0.0'와 같이 설정을 했음에도 정상적으로 작동하지 않는 문제를 만났고,
어떻게 해결하였는지 알아보자.
문제
나는 앞서 설명한 것처럼, .env파일을 아래와 같이 구성했다.
//.env
DATABASE_PORT=9000
DATABASE_HOST=DATABASE_DOMAIN
먼저! 나의 경우, DATABASE_HOST 부분을 위 처럼 도메인으로 적는 것이 아니라, 하드코딩(192.0.0.0와 같이 IP주소 직접 입력)했을 때에는 정상적으로 작동하였다.
그런데, 나는 도메인으로 설정해놓고 싶었고, /etc/hosts파일을 아래와 같이 구성했다.(참고로, 아래 아이피주소와 도메인은 모두 fake다)
#DB
192.0.0.0 DATABASE_DOMAIN
내 생각에는 정상적으로 작동이 됐어야 하는데, 작동이 되지 않았다...
혹시, 주소가 맵핑이 제대로 되지 않는가 해서 ping을 쳐봤다.
ping DATABASE_DOMAIN
음...? 아주 정상적으로 작동하는 것을 볼 수 있었다.
해결
다시 생각해보니 너무 당연했다.
내가 ping을 통해 확인 했던 곳은 컨테이너 내부가 아니라, local 컴퓨터 였다.(ssh로 붙어서 하긴 했지만, 결국 samesame)
즉! 로컬의 /etc/hosts 을 수정하는 것이 아니라, container 내부의 /etc/hosts를 수정해야 한다는 것이다!
그래서, docker-compose.yml을 통해서 컨테이너를 띄울 때 바로 /etc/hosts에 내가 원하는 주소를 추가해주는 방법을 찾았고,
아래와 같다.
version: "3.6"
services:
backend:
//...
extra_hosts:
- "DATABASE_DOMAIN:192.0.0.0"
frontend:
//...
extra_hosts:
- "DATABASE_DOMAIN:192.0.0.0"
'Docker' 카테고리의 다른 글
[Docker - 3] Dockerfile 작성법 (with example) (1) | 2022.09.24 |
---|---|
[Docker - 2] Container, Image 란 (0) | 2022.09.24 |
[Docker - 1] Docker란, Docker 사용이유 (Docker vs VM) (0) | 2022.09.24 |
[solved]Cannot create container for service frontend: failed to copy files: failed to open target ... no space left on device (0) | 2022.08.26 |
Docker Container TimeZone 설정 (0) | 2022.08.02 |