Docker wordpress 多站点 - 要公开哪些端口?

Posted

技术标签:

【中文标题】Docker wordpress 多站点 - 要公开哪些端口?【英文标题】:Docker wordpress multisite - what ports to expose? 【发布时间】:2019-12-22 22:59:10 【问题描述】:

我正在尝试将 Wordpress 多站点 / 设置为 Docker 容器中的网络。从文档中,我了解到多站点仅适用于端口 80 和 443。

当我将端口 8000 用于 wpmu 服务时,我可以访问 wordpress

docker-compose.yml

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    ports:
    - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wpmu_db
      MYSQL_USER: wpmu_db_user
      MYSQL_PASSWORD: wpmu_db_user_password

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: root_password

  wpmu:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    volumes:
      - ".wp/:/var/www/html"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpmu_db_user
      WORDPRESS_DB_PASSWORD: wpmu_db_user_password
      WORDPRESS_DB_NAME: wpmu_db
      WORDPRESS_CONFIG_EXTRA: define('WP_ALLOW_MULTISITE', true );

volumes:
  db_data: 

当我导航到 http://localhost:8000/wp-admin/network.php 时,我得到了

创建 WordPress 网站网络

错误:您无法使用您的服务器地址安装站点网络。

您不能使用端口号,例如:8000。

如果我将端口从 8000 更改为 80 或 443,该服务将不再工作(我分别收到“此页面无法正常工作 - localhost 未发送任何数据”和 404)。

知道如何设置多站点工作的端口吗?

【问题讨论】:

【参考方案1】:

我在 Docker 上使用 Wordpress 5.3.1 并设法通过将我的公开端口添加到 wp-admin/includes/network.php 中的允许端口列表来修复它。 查找以下代码:

if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443') ) ) )

并将其更改为包含您的端口:

if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443', ':8000') ) ) )

【讨论】:

对于本地设置,这应该是公认的答案!

以上是关于Docker wordpress 多站点 - 要公开哪些端口?的主要内容,如果未能解决你的问题,请参考以下文章

将 Wordpress 站点移动到 Docker:建立数据库连接时出错

sh 用docker快速启动wordpress站点

将 WordPress 站点移至 Docker,并最终移至服务器

wordpress 多站点同时注销所有网络站点

Wordpress 多站点错误

带有 localhost 和 8090 端口的 Wordpress 多站点