도커 컨테이너가 포트 대신 간단한 하위 도메인을 사용하도록 nginx proxy을 설정하려고합니다. 도커를 사용하여 콘테이너를 시작하는 것이 좋으며, 일반적으로 도커에 익숙하지 않기 때문에 즉시 v2 포맷을 사용하기 시작했습니다.Docker nginx 프록시는 도커로 작동하지만 v2가 아닌 v1을 사용합니까?
나는이 꽤 인기 있고 겉으로보기에 단순한 nginx 프록시 컨테이너를 사용하는 것이 왜 저에게 효과가 없었는지에 대해 많은 시간을 보냈습니다. 그것은 어떻게 든 도커 - 사용 v2를 사용하는 것과 관련이 있다는 것을 알게되었습니다.
내가 어떤 이유로 작동하지 않았다 처음 사용 된 고정 표시기 - compose.yml 파일을 게시 할 예정입니다:
version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy:alpine
container_name: nginx-proxy
network_mode: bridge
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
- ENABLE_IPV6=true
- DEFAULT_HOST=domain.com
whoami:
image: jwilder/whoami
network_mode: bridge
environment:
- VIRTUAL_HOST=whoami.local
을 그리고이 그것을 테스트하기 위해 예를 젠킨스 컨테이너입니다 :
version: "2"
services:
jenkins:
image: jenkins:2.46.2-alpine
restart: always
hostname: jenkins.domain.com
network_mode: bridge
expose:
- 8080
- 50000
ports:
- 8080:8080
- 50000:50000
volumes:
- /srv/jenkins:/var/jenkins_home
environment:
- VIRTUAL_HOST=jenkins.domain.com
- VIRTUAL_PORT=8080
nginx-proxy:
image: jwilder/nginx-proxy:alpine
container_name: nginx-proxy
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
- ENABLE_IPV6=true
- DEFAULT_HOST=domain.com
whoami:
image: jwilder/whoami
environment:
- VIRTUAL_HOST=whoami.local
:
지금 나는 실제로 나를 위해 상자 밖으로 작업을했던 구성을 게시 할 예정입니다 16,
그리고 젠킨스 컨테이너 :
jenkins:
image: jenkins:2.46.2-alpine
restart: always
hostname: jenkins.domain.com
expose:
- 8080
- 50000
ports:
- 8080:8080
- 50000:50000
volumes:
- /srv/jenkins:/var/jenkins_home
environment:
- VIRTUAL_HOST=jenkins.domain.com
- VIRTUAL_PORT=8080
내가 network_mode: bridge
의 제거입니다 볼 수있는 유일한 진정한 차이. 나는 v2를 사용하여 별도의 네트워크가 생성되었음을 알았을 때 v1 (또는 간단하게 docker run
)과 같은 네트워크에 있다는 사실을 알았습니다. network_mode: bridge
을 사용하면이 문제가 해결 된 것으로 보입니다.
이 외에도 docker-compose.yml
파일의 구조적 변경 일 뿐이지 만이 설정이 작동하지 않게하는 몇 가지 다른 차이가 있어야합니다.
V1은 사용되지 않으므로 v2 형식을 사용하고 싶습니다. v2를 도우미로 작성하여 v2처럼 작동시키고 프록시가 제대로 작동하도록하려면 어떻게해야합니까?
을 너 봤어? – BMitch
실제로 오류가 없습니다. 프록시가 작동하지 않고 요청을 다른 컨테이너로 전달하지 않습니다. – noone