mysql - 将 Wordpress 站点移动到 Docker:建立数据库连接时出错
问题描述
我最近一直在使用 Wordpress 和 Docker 创建新站点,并且对它的工作原理有了合理的了解,我现在希望将一些已建立的站点迁移到 Docker 中。
我一直在关注本指南:
https://stephenafamo.com/blog/moving-wordpress-docker-container/
我已按应有的方式进行了所有设置,但是当我转到 domain.com:1234 时,我收到错误消息“建立数据库连接时出错”。我已按照建议将 wp-config.php 中的 'DB HOST' 更改为 'mysql',并且我引入的站点中的所有 DB 详细信息都是正确的。
我已经附加到 mysql 容器并检查了 db 是否存在并且使用了正确的用户,并且还通过 mysql CLI 确保 pw 是正确的。
SELinux 设置为许可,我没有更改任何目录/文件所有权或权限,对于后者,目录都是 755,文件应该是 644。
编辑:我应该提一下,数据库/数据及其下的所有内容似乎都归用户/组“polkitd input”所有,而不是root。
当我在端口 1234 上浏览站点时(如预期的那样),除了 WP 容器的 500 条错误消息之外,Docker 日志并没有真正告诉我太多。
这是 docker-compose 文件:
version: '2'
services:
example_db:
image: mysql:latest
container_name: example_db
volumes:
- ./database/data:/var/lib/mysql
- ./database/initdb.d:/docker-entrypoint-initdb.d
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123 # any random string will do
MYSQL_DATABASE: mydomin_db # the name of your mysql database
MYSQL_USER: my domain_me # the name of the database user
MYSQL_PASSWORD: password123 # the password of the mysql user
example:
depends_on:
- example_db
image: wordpress:php7.1 # we're using the image with php7.1
container_name: example
ports:
- "1234:80"
restart: always
links:
- example_db:mysql
volumes:
- ./src:/var/www/html
建议最受欢迎,因为我没有想法!
解决方案
使用新版本的 docker-compose 它看起来像这样(如果你不想使用 PhpMyAdmin,你可以省略它):
version: '3.7'
volumes:
wp-data:
networks:
wp-back:
services:
db:
image: mysql:5.7
volumes:
- wp-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootPassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wp-user
MYSQL_PASSWORD: wp-pass
ports:
- 8889:3306
networks:
- wp-back
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: db
MYSQL_USER: wp-user
MYSQL_PASSWORD: wp-pass
MYSQL_ROOT_PASSWORD: rootPassword
ports:
- 3001:80
networks:
- wp-back
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- 8888:80
- 443:443
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp-user
WORDPRESS_DB_PASSWORD: wp-pass
volumes:
- ./wordpress-files:/var/www/html
container_name: wordpress-site
networks:
- wp-back
数据库卷是一个命名卷 wp-data,而 wordpress html 是一个绑定挂载到您当前目录的 ./wordpress-files 。
推荐阅读
- python - 将列表列表转换为单个列表
- spring-boot - 无法从同一域中的另一台 PC 访问 swagger ui
- vscode-remote - 如何在 vscode-remote 中连接到远程 Docker 守护进程
- node.js - 使用 Api.ai nodejs angular socket.io 的聊天机器人
- java - 为什么我的 config.yml 文件一直只输出零?bukkit 插件
- reactjs - 如果它没有在构造函数中绑定 this,为什么它在反应组件方法中解析为 undefined 而不是 window/global-env
- python-3.x - 如何优化此函数中包含的以下代码
- flutter - 当我们在 Flutter 的 TextField 小部件中输入时如何格式化文本?
- r - R嵌套在多个列表中的重复列表子集
- html - 使段落和表格内联并放置在容器中间