我正在尝试在一个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图像,而且就像我说的那样,它确实可以正常工作。
最佳答案
我终于找到了答案。它有两个方面:
因此更改:
WORDPRESS_DB_HOST: db:3306
至:
WORDPRESS_DB_HOST: site1_db:3306
显然,site2也是如此
关于wordpress - 无法使用docker和nginx作为反向代理托管多个Wordpress网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48456879/