无法在 docker 编写中使用 php 支持配置 nginx 反向代理



我一直在尝试在 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 撰写文件。

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_HOSTenv 变量(没有这个变量,容器不会被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

最新更新