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

问题描述 投票:1回答:1

我一直试图在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的新手,我真的需要一些帮助。

docker nginx docker-compose reverse-proxy nginx-reverse-proxy
1个回答
1
投票

请参考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
© www.soinside.com 2019 - 2024. All rights reserved.