을 역 프록시로 사용하려면 시간이 지남에 따라 동적 IP 주소가 변경 될 수있는 Docker 컨테이너 앞에 traefik에 docker backend. 이것을 설정하는 데 찾을 수있는 모든 예제는 동일한 패턴을 따릅니다.docker 백엔드가있는 traefik 역방향 프록시 - 컨테이너 레이블을 통하지 않고 traefik의 config 파일에서 프론트 엔드 규칙을 구성하십시오.
우선 docker
모드에서 추가 구성 파일없이 traefik을 시작하고 호스트 네트워크 모드를 활성화합니다 (선택 사항, traefik이 호스트의 모든 Docker 네트워크를 볼 수 있도록 선택 사항). 필요한 경우) Docker unix 소켓을 마운트하여 traefik이 컨테이너 시작 및 중지를 청취 할 수있게하십시오.
docker run --rm -p 80:80 --net=host --name traefik-reverse-proxy -v /dev/null/traefik.toml:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock traefik --docker --loglevel debug
그런 다음, 적어도 labels 다음 다른 컨테이너를 시작하고 설정 :
- traefik.backend을 "일부-백엔드 이름"
- traefik.frontend.rule : "호스트 : 로컬 호스트 ; 방법 : "GET (또는 어떤 규칙은)
- traefik.port : 80 (또는 컨테이너가 내부적으로 노출 어떤 포트)
예 :
docker run --rm --name nginx -l traefik.backend="some-backend-name" -l traefik.frontend.rule="Host: localhost; Method: GET" -l traefik.port="80 nginx
는 다음, curl localhost
을하고, 하나가 요청을 가져다가 Nginx의 용기에 라우트 된 traefik
컨테이너의 로그를 볼 수 있습니다.
그러나 지금까지는 애플리케이션 자체 내 역방향 프록시 전달 규칙 (예 : 전달 호스트 : some.host.name to container xxx)을 구성해야한다는 사실을 좋아하지 않습니다. 내 도커가 파일을 작성하여 컨테이너, 레이블 등을 설정하는 곳이 일반적으로 있습니다. 오히려 이것을 응용 프로그램과 분리하고 대신 traefik 구성의 일부로 구성하려고합니다.
어떻게 든 가능합니까? 내가 노력하는 예제의 nginx 컨테이너에서 traefik.frontend.rule
라벨을 떠나는 대신 traefik
에 대해 다음 구성 파일을 마운트된다
[frontends]
[frontends.frontend1]
backend = "some-backend-name"
[frontends.frontend1.routes.test_1]
rule = "Host: localhost; Method: GET"
traefik
의 시작 명령은 이렇게됩니다 :
docker run --rm -p 80:80 --net=host --name traefik-reverse-proxy -v $PWD/traefik.toml:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock traefik --docker --loglevel debug
그러나,이 수행 프론트 엔드 규칙을 nginx 컨테이너의 백엔드 레이블이있는 config 파일에서 첨부하지 않는 것 같습니다. curl localhost
은 이제 404/Not found
오류를 반환합니다.
입력 해 주셔서 감사합니다. 그러나 이것을 시도 할 때 결과는 완전히 동일합니다. 이 일에 대한 실례를 찾았다면 알려주십시오. – Dirk