Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nginx和wordpress不同的docker组合文件_Wordpress_Docker_Nginx_Docker Compose - Fatal编程技术网

nginx和wordpress不同的docker组合文件

nginx和wordpress不同的docker组合文件,wordpress,docker,nginx,docker-compose,Wordpress,Docker,Nginx,Docker Compose,我正在尝试将多个docker compose文件与一个nginx docker compose文件连接 例如,此设置非常有效(我在运行之前创建了网络): (我知道这个例子是多余的,因为我有两台nginx服务器) 我运行容器,一切都按预期进行。我的网站是通过myapp.local代理的 但是。当我将静态网站更改为wordpress图像时,如下所示: #wordpress/docker-composer.yml wordpress: image: wordpress contai

我正在尝试将多个docker compose文件与一个nginx docker compose文件连接

例如,此设置非常有效(我在运行之前创建了网络):

(我知道这个例子是多余的,因为我有两台nginx服务器)



我运行容器,一切都按预期进行。我的网站是通过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()在连接到上游时失败(111:连接被拒绝),客户端:172.23.0.1,服务器:myapp.local,请求:“GET/HTTP/1.1”,上游:http://172.23.0.2:8080/,主机:“myapp.local”

问题是,当我从
localhost:8080
访问wordpress应用程序时,它正在工作

此配置中的wordpress应用程序有问题吗?它检测不到我的主人或什么?我怎样才能解决这个问题呢?

我想出来了

似乎我必须为我的代理程序使用内部端口,而不是外部端口。例如,对于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
    }
}
#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;
    }
}
#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/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
    }
}