【问题标题】:nginx and wordpress different docker-compose filesnginx 和 wordpress 不同的 docker-compose 文件
【发布时间】:2018-05-26 17:04:48
【问题描述】:

我正在尝试用一个 nginx docker-compose 文件连接多个 docker-compose 文件。

例如,这个设置很好用(我在运行之前已经创建了网络):

(请耐心等待。我知道这个例子是多余的,因为我有两个 nginx 服务器)

#static_site/docker-compose.yml
version: '3'

services:
  web:
    image: nginx:stable-alpine
    container_name: app_web_static
    volumes:
      - "./nginx.conf:/etc/nginx/conf.d/default.conf"
      - "./web:/var/www/static_web"
    ports:
      - "8080:8080"
    networks:
      - test_network

#static_site/nginx.conf
server {
    listen 8080;

    location / {
       root /var/www/static_web;
       index  index.html index.htm;
    }
}

#nginx/docker-compose.yml
server {
    listen 80;
    server_name myapp.local;

    #Docker DNS
    resolver 127.0.0.11;

    location / {
        set $docker_host "app_web_static"; 
        proxy_pass http://$docker_host:8080;
    }
}

我运行容器,一切正常。我的网站通过 myapp.local 代理

但是。当我将静态网站更改为这样的 wordpress 图片时:

#wordpress/docker-composer.yml
wordpress:
    image: wordpress
    container_name: app_web
    links:
      - db:mysql
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_PASSWORD: example
    networks:
      - test_network
      - test_wordpress_db

  db:
    image: mysql:5.7
    container_name: test.web.db
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - ./mysql/data:/var/lib/mysql
    networks:
      - test_wordpress_db

我再次运行容器(更新 nginx .yml 文件后)。我将请求记录在我的终端(nginx 容器,这意味着请求已处理),但作为错误: test.nginx | [error] 5#5: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 172.23.0.1, server: myapp.local, request: "GET / HTTP/1.1", upstream: "http://172.23.0.2:8080/", host: "myapp.local"

问题是当我从 localhost:8080 访问 wordpress 应用程序时它正在运行。

这个配置的wordpress应用有问题吗?它无法检测到我的主机或其他东西?我该如何解决这个问题?

【问题讨论】:

    标签: wordpress docker nginx docker-compose


    【解决方案1】:

    我想通了。

    看来我的proxy_pass 必须使用内部端口,而不是外部端口。例如,对于 wordpress docker-compose.yml 文件,我必须像这样编写代理:

    #nginx/docker-compose.yml
    server {
        listen 80;
        server_name myapp.local;
    
        #Docker DNS
        resolver 127.0.0.11;
    
        location / {
            set $docker_host "app_web_static"; 
            proxy_pass http://$docker_host:80; # here. the internal wordpress port
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2016-07-17
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2020-07-23
      • 2021-02-15
      • 2018-04-24
      相关资源
      最近更新 更多