簡體   English   中英

nginx和wordpress不同的docker-compose文件

[英]nginx and wordpress different docker-compose files

我正在嘗試將多個docker-compose文件與一個nginx 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" 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應用是否存在問題? 它無法檢測到我的主機或其他東西嗎? 我怎么解決這個問題?

我想到了。

看來我必須為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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM