Docker 自动更改 URL 中的端口

Docker automatically changes port in URL

我建立了两个 WordPress 网站,一个绑定到端口 9000,一个绑定到 8000。它们都连接到同一个 MySQL 数据库。

当我访问端口 8000 时,它运行良好并连接到网站和数据库。

另一方面,当我访问端口 9000 时,它会自动将我重定向到端口 8000 及其网站。为什么会发生这种情况?

这是 docker-compose 文件:

尝试清除缓存并在 Firefox 上尝试过(默认浏览器是 Chrome),但它仍然发生。

version: '3.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

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress

   second_wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "9000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress

volumes:
    db_data: {}

转到 http://localhost:9000/wp-admin/install.php 安装您的第二个实例。

请注意,配置存储在容器内的文件中(在 /var/www/html/ 中),当您停止容器时将会丢失。所以重启后需要重新安装。

如果你想保存配置,你可以创建一个卷并将其映射到 /var/www/html 使用这样的东西

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
     volumes:
       - wordpress:/var/www/html

volumes:
  wordpress:

问题是两个站点在 mySQL 中使用相同的数据库,解决方案是在 mySQL 中创建不同的数据库并将每个网站分配给它。

然后 wordpress 站点将从不同的数据库获取信息而不是路由。