docker wordpress Error establishing a database connection 方法之一

问题描述

在使用docker创建wordpress和mysql容器后,访问页面发生如下错误:

Error establishing a database connection

这个问题的原因在于当我在创建mysql容器时指定了创建数据库的密码,然而wordpress配置文件中数据库的连接密码不正确,所以出现上面的错误。

解决问题

当我们使用wordpress创建容器后发现,如果进入到容器以后修改配置文件有些困难,因为这个容器里面并没有一些编辑工具,例如vi等,那么应该怎么解决呢?我们在创建这个容器时,可以将配置文件这个目录给映射到本地,通过在本地来进行修改:

1、创建wordpress服务

[root@centos-7 docker]# docker service create --name wordpress -p 80:80 --env WORDPRESS_DB-PASSWORD=root \ --env WORDPRESS_DB_HOST=mysql --network demo \ --mount type=volume,source=wordpress-config,destination=/var/www/html wordpress

可以看到在创建这个容器时制定了–mount参数,这个在docker volume中相当于-v,只不过这里使用的是swarm而已,source参数后面的值就是映射到本地的目录,注意这个只能是相对路径,不能是绝对路径;destination参数后面的值是容器中的目录。

  • 查看容器位置

在manager节点上查看运行容器的各个位置:

[root@centos-7 Desktop]# docker service ps wordpress ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS oglkrvgo154n wordpress.1 wordpress:latest localhost.localdomain Running Running 29 minutes ago 

然后去localhost.localdomain这个节点上查看这个容器的情况:

复制代码

[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4f36a273c8cc wordpress:latest "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 80/tcp wordpress.1.oglkrvgo154nfvdgun1iqxopo [root@localhost ~]# docker inspect 4f36a273c8cc #查看那这个容器 { ... ... "Mounts": [ { "Type": "volume", "Name": "0cc097b7436dc91ecde52d98169bb1f6f160c158b52f0fc66f336d2e72aa8995", "Source": "/var/lib/docker/volumes/0cc097b7436dc91ecde52d98169bb1f6f160c158b52f0fc66f336d2e72aa8995/_data", "Destination": "/var/www/html", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], ... ... }

复制代码

内容很多,但是只需要关注上面这个就可以了,然后我们在本地进入到/var/lib/docker/volumes/0cc097b7436dc91ecde52d98169bb1f6f160c158b52f0fc66f336d2e72aa8995/_data这个目录中:

[root@localhost ~]# cd /var/lib/docker/volumes/0cc097b7436dc91ecde52d98169bb1f6f160c158b52f0fc66f336d2e72aa8995/_data [root@localhost _data]# ls index.php wp-activate.php wp-comments-post.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php license.txt wp-admin wp-config.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php readme.html wp-blog-header.php wp-config-sample.php wp-includes wp-login.php wp-signup.php

这就是该容器中的文件,我们需要修改wp-config.php这个文件中的内容。

复制代码

/** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress'); /** MySQL database username */ define( 'DB_USER', 'root'); /** MySQL database password */ define( 'DB_PASSWORD', ''); #将这个密码设置上就ok了 /** MySQL hostname */ define( 'DB_HOST', 'mysql'); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define( 'DB_COLLATE', '');

复制代码

其实只需要改动上面数据库密码处,将密码天成你数据库的密码就可以了。

参考:https://www.cnblogs.com/shenjianping/p/12268190.html

www.mihaoyun.com

原文链接:https://blog.csdn.net/ldq_sd/article/details/109898668?ops_request_misc=&request_id=3129e15c469e46738c4d3d49e8bdfaa1&biz_id=&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~koosearch~default-14-109898668-null-null.268%5Ev1%5Econtrol&utm_term=docker%E3%80%81wordpress%E3%80%81wordpress%E5%BB%BA%E7%AB%99%E3%80%81wordpress%E4%B8%BB%E9%A2%98%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享