mysql - Wordpress Docker 容器无法连接到数据库
问题描述
我正在使用以下代码,但我的本地站点无法连接到数据库
docker run --name db -p 90:3306 --restart=always --network wp-mysql-network -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=P@ssw0rd -v mysql- demo3:/var/lib/mysql -d mysql:latest
docker run -d --name wp-site1 --link db -p 85:80 -e WORDPRESS_HOST=db:90 --network wp-mysql-network -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=P@ ssw0rd -v wp-data-demo3:/var/www/html wordpress:最新
解决方案
当你运行类似的东西时
docker run -p 90:3306
您将内部端口 3306 暴露给机器(运行 docker 的机器)端口 90。
当你将一个容器连接到另一个容器时,你应该使用内部端口,这样
docker run -d --name wp-site1 \
--link db -p 85:80 \
-e WORDPRESS_DB_HOST=db:3306 \
--network wp-mysql-network \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=P@ssw0rd \
-v wp-data-demo3:/var/www/html wordpress:latest
此外,在您的情况下,您应该只公开您的前端,而不是后端(数据库)。
如果你在 HTTP 上使用 wordpress 成功,我建议你看看Traefik
处理 HTTPS 连接。(下面的一个例子)。
https://graspingtech.com/wordpress-docker-compose/
编辑
创建依赖项
docker network create wp-mysql-network docker volume create mysql-demo3 docker volume create wp-data-demo3
创建数据库实例
docker run --name db \ --network wp-mysql-network \ -v mysql-demo3:/var/lib/mysql \ --restart=always \ -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=wordpress \ -e MYSQL_USER=wpuser \ -e MYSQL_PASSWORD=P@ssw0rd -d mysql:latest
创建连接到 db 的 wordpress 实例
docker run -d --name wp-site1 \ --link db -p 85:80 \ -e WORDPRESS_DB_HOST=db:3306 \ --network wp-mysql-network \ -e WORDPRESS_DB_NAME=wordpress \ -e WORDPRESS_DB_USER=wpuser \ -e WORDPRESS_DB_PASSWORD=P@ssw0rd \ -v wp-data-demo3:/var/www/html wordpress:latest
使用您的网络浏览器连接到您的 wordpress 前端
http://localhost:85
推荐阅读
- go - 通过反射获取方式受接收方是否为指针影响
- java - 使用正则表达式和组解析大括号之间的 Java 代码
- powershell - pushd/popd 和重启的问题
- xamarin - 发布步骤使用 Visual Studio 2019 编译 Android apk
- sip - 如何使用 sipsorcery sdk 记录 voip 通话?
- java - JAVA ObjectNode 获取 JSON 数组
- c# - 如何在 SQL Server 中为具有相同 accname 帐户的行计算总和
- javascript - 无论componentWillUnmount如何,都会调用组件内部的setTimeout
- acumatica - 动态更改按钮颜色
- c++ - C++ 函数指针,再次。语法混乱