无法使用docker和nginx作为反向代理托管多个Wordpress站点

时间:2018-01-26 06:54:44

标签: wordpress docker nginx docker-compose digital-ocean

我正在尝试在单个Digital Ocean VPS上托管多个站点。我正在使用docker实现这一目标。每个Wordpress站点都有自己的数据库。

使用两个站点中的任何一个的docker-compose文件都可以正常运行。添加秒不起作用。 (导航到域会出现nginx错误,该服务暂时无法使用')

我尝试从基于apache映像的容器启动静态网站,它确实有效。因此,nginx反向代理确实成功路由了流量。

我猜我需要在两个docker-compose文件之间进行更改。我创建的第一个教程或样本在创建第一个之后停止,并且从未实际显示正在创建的第二个Wordpress网站。

Wordpress网站1:

搬运工-compose.yml

version: "3"

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
     container_name: site1_db

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     expose:
       - 80
     restart: always
     environment:
       VIRTUAL_HOST: www.site1.com
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
     container_name: site1_wp
volumes:
    db_data:

networks:
  default:
    external:
      name: nginx-proxy

Wordpress网站2:

搬运工-compose.yml

version: "3"

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
     container_name: site2_db

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     expose:
       - 80
     restart: always
     environment:
       VIRTUAL_HOST: www.site2.com
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
     container_name: site2_wp
volumes:
    db_data:

networks:
  default:
    external:
      name: nginx-proxy

预先创建名为nginx-proxy的网络以链接所有容器。我省略了关于nginx实例的细节,因为它使用了众所周知的jwilder图像,就像我说的那样,它看起来确实很好。

1 个答案:

答案 0 :(得分:0)

我终于找到了答案。它是双重的:

  1. WORDPRESS_DB_HOST环境变量不应该是服务,而应该是它引用的容器
  2. 因此改变:

    Sub iSeries()
    Dim myDate1 As String
    Dim Ipan1 As String
    Dim Ipan2 As String
    Dim sFilename As String
    sFilename = Dir("G:\" & Ipan2)
    
    myDate1 = Format(Date - 1, "yymmdd")
    Ipan1 = "157782_panama_iseries_" & mGlobalDate & ".txt"
    Ipan2 = "*_CP*" & myDate1 & "S1.TXT*"
    
    On Error GoTo Quit
    'source path below
    FileCopy "G:\" & sFilename, _
        "C:\" & mFilePath & "\" & Ipan1
    Quit:
    End Sub
    

    为:

    WORDPRESS_DB_HOST: db:3306
    

    对于site2来说显然也是如此

    1. 上述修复仍然不会导致工作设置。当更改数据库容器以从mariadb而不是mysql构建时,它开始工作!我一点也不知道为什么这是真的。特别是因为mysql实例可以自己工作,但是当同时运行时,只有mariadb工作