2 mysql wordpress database-connection localhost docker
我用命令运行docker wordpress 图像
docker run --name test-wordpress -p 8081:80 -d wordpress
Run Code Online (Sandbox Code Playgroud)
MySQL 8 在 Windows 10 上的本地主机上。数据库凭据有效。
在 wordpress 设置中,我使用此配置
我得到错误
建立数据库连接时出错
什么是正确的数据库主机?
默认情况下,docker 会将您的新容器附加到桥接网络。这意味着诸如: localhostand 之类的地址127.0.0.1仅指容器本身。不是主机。
解决这个问题很容易,就是将 MySQL 数据库包装在它自己的容器中。通过这种方式,您的容器可以毫无问题地相互寻址。
如果您真的想将容器中的服务与主机上的服务连接起来,则需要将容器连接到适当的网络。
首先,您需要创建一个网络。假设您的本地机器的固定 IP 为192.168.0.1,您应该能够使用以下方法执行此操作:
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet
Run Code Online (Sandbox Code Playgroud)
然后你可以:
docker run --name test-wordpress --net=dockernet -p 8081:80 -d wordpress
Run Code Online (Sandbox Code Playgroud)
然后您应该能够通过 IP 从容器内部引用主机:192.168.0.1。
不过,这里更好的选择是使用 docker-compose 创建一个应用程序堆栈定义,其中包括数据库和 wordpress 应用程序。
您可以创建这样的docker-compose.yml文件:
docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
Run Code Online (Sandbox Code Playgroud)
然后用这个开始堆栈:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
Run Code Online (Sandbox Code Playgroud)
请注意,数据库数据将存储在名为 的 docker 管理卷中db_data。
可以在此处找到有关安装 docker-compose 的详细信息:https : //docs.docker.com/compose/install/
docker run使用 just 也可以实现相同的效果docker run,如下所示:
docker-compose up
Run Code Online (Sandbox Code Playgroud)
您可以将 mysql 数据文件的映射更改为本地目录,而只需省略该docker volume create语句。
| 归档时间: |
|
| 查看次数: |
8003 次 |
| 最近记录: |