使用wordpress正确地让docker正确访问我的数据库

时间:2017-09-08 13:35:38

标签: mysql wordpress docker docker-compose

我是Docker的新手 - 但我正在尝试设置一个本地测试环境来播放一些wordpress。

所以我去了docker站点并提取了一个默认的docker .yml文件,了解如何轻松实现它。

我做了一些改动,但大多数情况下这是一个直接的文件。

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql2
     restart: always
     ports:
         - "3306:3306"
     environment:
       MYSQL_ROOT_PASSWORD: somerootwordpresspw
       MYSQL_DATABASE: testdatabase
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     volumes:
         - ./WP-TEST/:/var/www/html/
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

当我使用上面的.yml文件运行docker-compose up时,我看到了这个错误:

MySQL "CREATE DATABASE" Error: Access denied for user 'wordpress'@'%' to database 'wordpress'

我觉得很奇怪,因为我正在命名数据库testdatabase,为什么要尝试创建一个名为wordpress的数据库呢?

当我与SQL Pro连接时,我可以看到testdatabase,但根据控制台,它尝试创建wordpress db。

如何让它连接到我的指定数据库,而不是经常无法创建wordpress

1 个答案:

答案 0 :(得分:2)

所以我想我明白了。

真的简单。在我的.yml文件的wordpress部分,我需要包含WP_DB_NAME: testdatabase

通过这样做,它使用我的命名testdatabase来安装wordpress。

希望这有助于那些可能偶然发现这一点的人。

现在.yml文件看起来像这样:

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql2
     restart: always
     ports:
         - "3306:3306"
     environment:
       MYSQL_ROOT_PASSWORD: somerootwordpresspw
       MYSQL_DATABASE: testdatabase
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     volumes:
         - ./WP-TEST/:/var/www/html/
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_NAME: testdatabase
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data: