mysql - Docker Wordpress连接到本地主机上的数据库服务器

本文介绍如何使用Docker部署WordPress及MySQL服务,并提供详细的命令示例。包括如何创建网络、设置环境变量、映射卷以及解决连接问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视频上面的

docker service create --name mysql -p 3306:3306 --env MYSQL_ROOT_PASSWORD=root \
    --env MYSQL_DATABASE=wordpress \
    --network demo \
    --mount type=volume,source=mysql-data,destination=/var/lib/mysql \
    mysql:5.7

docker service create  --name wordpress -p 80:80 \
    --env WORKDPRESS_DB_PASSWORD=root \
    --env WORDPRESS_DB_HOST=mysql \
    --network demo \
    wordpress

能用的


 docker service create --name mysql -p 3306:3306 --env MYSQL_ROOT_PASSWORD=root  \
    --env MYSQL_DATABASE=wordpress  --env MYSQL_USER=wordpress \
    --env MYSQL_PASSWORD=wordpress --network demo   \
    --mount type=volume,source=mysql_data2,destination=/var/lib/mysql \
    mysql:5.7

docker service create  --name wordpress -p 80:80 \
     --env WORDPRESS_DB_USER=wordpress  --env WORDPRESS_DB_PASSWORD=wordpress \
    --env WORDPRESS_DB_HOST=192.168.184.132:3306 --env WORDPRESS_DB_NAME=wordpress \
    --network demo \
    wordpress:latest


还是网络建立有问题的原因     mysql换成192.168.184.132 就可以了  overlay网络没有建成的原因

 

 

 

 

 

 

 

 

 

 

docker 搭建wordpress

https://blog.csdn.net/fanxl10/article/details/83904286

docker 搭建wordpress

fanxl12 2018-11-09 22:40:14  998  收藏

分类专栏: devops 文章标签: docker

版权

  1. 创建mysql,版本5.7
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -v $(pwd)/mysql:/var/lib/mysql mysql:5.7
  • 1

这里只能用Bind Mouting方式持久化数据,用volume会报错,不知道为啥,如果是mysql8的版本好像可以,如下:

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -v mysql-data:/var/lib/mysql mysql
  • 1

但是mysql 8的版本,wordpress连接会报错,好像是密码验证改了,需要修改mysql用户的密码验证方式

  • 进入容器
docker exec -it mysql /bin/bash
  • 1
  • 登录数据库(此处的密码为参数-e MYSQL_ROOT_PASSWORD=root对应的值,此处密码为root)
mysql -u root -p root
  • 1
  • 使用mysql数据库
use mysql;
  • 1
  • 查询mysql8.0的root用户
select host, user, plugin from user;
  • 1

从查到的结果中,可以看到root的用户的加密方式为caching_sha2_passoword, 而navicat连接所用的方式为native_password。mysql为远程连接和本地连接提供了不同的密码验证方式

  • 修改root用户插件验证方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
  • 1

修改成功之后就可以连接了

  1. 创建wordpress
docker run -d  --name wordpress --link mysql -p 80:80 -e WORDPRESS_DB_PASSWORD=root -e MYSQL_DATABASE=mysql wordpress
  • 1

 

 

 

 

 

 

 

 

 

 

 

https://www.coder.work/article/2550105

 

 

 

docker volume create db_data

docker network create mysqlnet

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=somewordpress -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress -v db_data:/var/lib/mysql --net=mysqlnet -d mysql:5.7

docker run --name test-wordpress -e WORDPRESS_DB_HOST=test-mysql:3306 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress --net=mysqlnet -p 8081:80 -d wordpress:latest

 

 

 

 

mysql - Docker Wordpress连接到本地主机上的数据库服务器

我用命令运行docker wordpress image

docker run --name  test-wordpress -p 8081:80 -d wordpress

MySQL 8在Windows 10的本地主机上。数据库凭据有效。
在wordpress安装程序中,我使用此配置
数据库名称:WordPress(尚未存在)
用户名:root
密码:***
数据库主机:localhost | | 127.0.0.1 | | host.docker.internal
我错了
建立数据库连接时出错
什么是正确的数据库主机?

 

 

最佳答案

默认情况下,docker会将新容器附加到桥接网络。这意味着:localhost127.0.0.1等地址仅指容器本身。不是主机。
解决这个问题的简单方法是将MySQL数据库包装在自己的容器中。这样您的容器就可以无问题地相互寻址。
连接到主机上的MySQL数据库
如果您真的要将容器中的服务与主机上的服务连接,则需要将容器连接到适当的网络。
首先,你需要创建一个网络。假设您的本地计算机的固定IP为192.168.0.1,那么您应该能够使用:

<span style="color:#212529"><code style="margin-left:2px">docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet
</code></span>

你可以:
 
<span style="color:#212529"><code style="margin-left:2px">docker run --name  <span style="color:#ae7313">test</span>-wordpress --net=dockernet -p 8081:80 -d wordpress
</code></span>

然后,您应该能够通过IP: 192.168.0.1 从容器内部引用主机。
使用wordpress和MySQL创建堆栈
不过,这里更好的选择是使用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: {}

从这个开始堆栈:
 
<span style="color:#212529"><code style="margin-left:2px">docker-compose up
</code></span>

然后访问: http://localhost:8000
注意,数据库数据将存储在docker管理的卷 db_data 中。
安装docker compose的详细信息可以在这里找到: https://docs.docker.com/compose/install/
docker run 启动两个容器
只要 docker run ,就可以达到同样的效果,如下所示:
 
<span style="color:#212529"><code style="margin-left:2px">docker volume create db_data

docker network create mysqlnet

docker run --name <span style="color:#ae7313">test</span>-mysql -e MYSQL_ROOT_PASSWORD=somewordpress -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress -v db_data:/var/lib/mysql --net=mysqlnet -d mysql:5.7

docker run --name <span style="color:#ae7313">test</span>-wordpress -e WORDPRESS_DB_HOST=<span style="color:#ae7313">test</span>-mysql:3306 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress --net=mysqlnet -p 8081:80 -d wordpress:latest
</code></span>

您可以更改mysql数据文件到本地目录的映射,只需命令 docker volume create 语句。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值