【发布时间】:2018-01-26 06:54:44
【问题描述】:
我正在尝试在单个 Digital Ocean VPS 上托管多个站点。我正在使用 docker 来实现这一点。每个 Wordpress 网站都有自己的数据库。
使用两个站点中的任何一个的 docker-compose 文件都可以正常工作,并且该站点可以上线。添加第二个不起作用。 (导航到域会出现“服务暂时不可用”的 nginx 错误)
我尝试从基于 apache 映像的容器启动静态网站,它确实有效。所以 nginx 反向代理确实成功地路由了流量。
我猜我需要在两个 docker-compose 文件之间进行更改。我发现的每个教程或示例都在创建第一个之后停止,并且从未真正显示正在创建的第二个 Wordpress 站点。
Wordpress 网站 1:
docker-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:
docker-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 图像,就像我说的那样,它似乎工作得很好。
【问题讨论】:
-
为什么要使用两个
docker-compose文件?我认为您需要将docker-compose文件、nginx proxy与另一个文件合并。另外我认为你有数据库问题,因为你有两个数据库实例,它将数据库保存到同一个位置。 -
不,每个站点都完全包含在自己的目录中,有自己的 docker-compose 文件以及映射到相关容器的文件夹
-
您能否检查两个 wordpress 是否无法通过
nginx proxy访问? -
添加你的 nginx 配置
-
jwilder nginx proxy 不需要配置。它是自动 nginx 代理。
标签: wordpress docker nginx docker-compose digital-ocean