【问题标题】:Docker Compose: connect a WordPress container to a MySQL container?Docker Compose:将 WordPress 容器连接到 MySQL 容器?
【发布时间】:2019-12-13 18:38:04
【问题描述】:

我有一个已经在运行的 MySQL 容器,可用于其他几个容器。

现在我正在尝试将一个 wordpress 容器连接到它,但我得到了:

建立数据库连接时出错

而wp容器日志显示:

MySQL 连接错误:(1045) 用户 'my_user'@'172.20.0.5' 的访问被拒绝(使用密码:YES)

mysql容器已经启动并运行,容器名称为mysql,我使用一个PHPMyAdmin容器来管理它;我可以这样做(它已连接到 Mysql 服务器容器)。

这是我的 WP 容器的 docker compose 代码:

version: '2'

services:
  wordpress:
    image: wordpress:latest
    restart: unless-stopped
    ports:
      - 80
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: "my_user"
      WORDPRESS_DB_PASSWORD: "12345"
      WORDPRESS_DB_NAME: "my_user"
    volumes:
      - /f/Sites/mia:/var/www/html
    networks:
      - occms
      - ocdb

networks:
  occms:
    external:
      name: oly-cms
  ocdb:
    external:
      name: oly-db

注意事项:

  • 我的数据库名称和它的用户名相同:my_user
  • 我已经预先创建了 mysql 用户my_user,并赋予它对my_user 数据库的完全权限。 (请注意,实际用户和数据库以“g”开头;我已将它们更改为“my_user”以保护本问题的隐私。)

  • 我已经将一堆数据预先导入到数据库中(用于调试当前正在生产的网站,使用 sql 备份)。
  • 启动 wp 容器后,我手动将生产中的所有 wp 文件复制到具有相同相应文件的 wp 容器文件夹中,并覆盖它们。
  • 当我编辑 WORDPRESS_DB_HOST: 变量并重新启动 wp 容器时,我确实看到它的值反映在 wp-config.php 文件中。
  • wp-config.php 中,我已确保凭据匹配:
define('DB_NAME', 'my_user');

/** MySQL database username */
define('DB_USER', 'my_user');

/** MySQL database password. Changed on: 3/20/2014 2:40 PM */
define('DB_PASSWORD', '12345');

/** MySQL hostname */
define('DB_HOST', 'mysql');

我的假设是,只要我在同一个 docker 网络中同时拥有 mysql 和 wp 容器,它们应该能够相互连接吗?我在 WP 撰写代码中遗漏了什么吗?

【问题讨论】:

  • 是什么类型的网络?
  • @alex067 它们都是预先存在的桥梁。
  • 如果您尝试改用数据库的容器 IP 地址和端口会怎样?
  • @alex067 它似乎能够“连接”到容器,并显示错误MySQL Connection Error: (1045) Access denied for user 'my_user'@'172.20.0.5' (using password: YES。只是似乎无法与该用户或其他东西连接到实际的数据库。
  • 从截图来看,用户好像绑定了localhost,我觉得应该是user'@'%'

标签: mysql wordpress docker docker-compose containers


【解决方案1】:

您为 wordpress 设置了变量,而不是为 MySQL 设置了变量,所以这不起作用。

我写了一个docker-compose 来用我的mysql加载一个wordpress:

  1. 下载:https://github.com/aboutsam/wp-docker-startkit

  2. docker-compose up -d

【讨论】: