我一直试图在docker compose中配置php支持的nginx反向代理,该docker在端口3838上运行应用程序服务。我希望该应用程序在端口80上运行nginx-proxy。他们帮助我解决了问题。我也尝试遵循此https://github.com/dmitrym0/simple-lets-encrypt-docker-compose-sample/blob/master/docker-compose.yml,但没有成功。这是我当前的docker compose文件。
docker-compose.yml
version: '3'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "82:80"
- "444:443"
volumes:
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "/etc/nginx/certs"
app:
build:
context: .
dockerfile: ./app/Dockerfile
image: rocker/shiny
container_name: docker-app
restart: always
ports:
- 3838:3838
我错过了什么吗?有时我会在docker-compose文件中看到virtual_host环境变量。那需要吗?另外,我是否必须手动配置nginx配置文件并将它们附加到jwilder / nginx-proxy dockerfile?我是Docker的新手,我真的需要一些帮助。
请参考nginx-proxy官方文档的多个端口部分。在您的情况下,除了设置强制性VIRTUAL_HOST
env变量(没有此设置,nginx-proxy
服务不会将容器反向代理)之外,您还必须设置VIRTUAL_PORT
变量,因为nginx-proxy
将默认为服务在端口80
上运行,但您的app
服务已绑定到3838
端口。
尝试使用此docker-compose.yml
文件以查看其是否有效:
version: "3"
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
app:
build:
context: .
dockerfile: ./app/Dockerfile
image: rocker/shiny
container_name: docker-app
restart: always
expose:
- 3838
environment:
- VIRTUAL_HOST=app.localhost
- VIRTUAL_PORT=3838