검색해 보면 모든 컨테이너를 하나의 docker-compose.yml 로 구성하는 경우는 가능한것 같은데 이렇게 하지 않고도 가능한지 궁금합니다.
필요한 이유가, pihole하고 plexdrive를 (다른 컨테이너도 몇가지는 있습니다만, 이 두가지가 문제를 발생시킵니다.) 모두 도커로 사용하고 있는데, 부팅시에 pihole 이 생성/실행 되기 전에 plexdrive 가 google 사이트를 접속하려고 하면 마운트 실패가 되는것 같아서 입니다.
pihole의 ip주소를 공유기의 DNS 서버에 세팅해 두었기 때문에 pihole 이 정상동작하기 전에는 DNS를 필요로하는 모든 어플이 제대로 동작하지 않게 되기 때문인것으로 추측합니다.
자주 부팅하는 것은 아닙니다만, 그래도 부팅할때 마다, 끄기전에 pihole 세우고, 리부트하고, 다시 켜는 것은 너무 불편할 것 같아서 말이지요.
docker-compose로 depends_on을 줄 수는 있지만 컨테이너의 시작만을 보장할 뿐이지 그 컨테이너의 작업인 DNS가 동작한다거나 마운트가 선행되었다는 것은 아닙니다. 따라서 docker-compose로도 해결 안됩니다. 제 경우는 나중에 시작되어야할 컨테이너에 restart: no로 주고 마운트가 되었는지 외부에서 체크한다음에 docker-compose up -d하는 스크립트를 시작시에 한번 실행하도록 등록해서 사용합니다. 비슷하게 dns resolve가 되었는지 체크하고 컨테이너 올려주는 스크립트를 짜서 해결하실 수 있을듯 합니다.
pihole DNS 문제는 차단해야할 광고나 웹접속이 없다고 간주하고 dockerhost에서 그냥 8.8.8.8을 씁니다.
systemd 서비스로 실행하고 After에 지정하는 방식은 어떨까요? docker-compose랑 별 차이 없을까요?
/ViPm5