Docker部署MySQL及管理工具phpmyadmin
phpmyadmin,一个web版的MySQL客户端管理工具,部署在服务器上,可以解决缺少MySQL客户端管理工具的问题。
本文主要包括以下内容:
- 使用docker分别部署MySQL、phpmyadmin。
- 使用docker-compose部署MySQL及phpmyadmin。
phpmyadmin的官网:phpMyAdmin
phpmyadmin的官网文档中,docker部署说明:Installation — phpMyAdmin 5.1.4 documentation
分别部署MySQL、phpmyadmin
mysql
- Docker Hub上关于MySQL镜像的介绍:mysql - Official Image | Docker Hub
- 部署脚本
docker run --name mysql_rdb -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.42
MYSQL_ROOT_PASSWORD:root账户的密码
phpmyadmin
- 部署脚本
docker run --name myadmin -d -e PMA_ARBITRARY=1 -p 13306:80 phpmyadmin:latest
PMA_ARBITRARY:允许手动输入MySQL的IP地址
容器启动后,输入登陆地址:http://ip:13306,ip地址换成自己服务器的IP。页面如下:
为了登陆MySQL,此时需要获取MySQL的IP,由于MySQL和phpmyadmin都是在docker默认的bridge网络上,容器之间无法通过容器名称相互访问(参见:http://t.csdn.cn/qvczF),故可以通过查看默认的bridge网络,查看MySQL的IP,执行命令:
docker network inspect bridge
上述命令输出类的信息中,部署信息类似下面:
"Containers": {
"558a502609e8b31a8caf7e816bc4cd1e7215c897a91fec4eee100911f53bcb24": {
"Name": "mysql_rdb",
"EndpointID": "b760349f587073e09a622d375b797fa8dabb641abfb92f859995d3115a8e3df5",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
},
"5dc9e56d55558c6c9412e5fe49c89a1d5da03f50ab927429665f8dfdeee17c3f": {
"Name": "myadmin",
"EndpointID": "4c0ea505a8d98e05e859088d342a6f91d4c29e814ca07181a15b85685300215e",
"MacAddress": "02:42:ac:11:00:05",
"IPv4Address": "172.17.0.5/16",
"IPv6Address": ""
}
}
- 上面信息中可以看到,MySQL容器mysql_rdb的IP地址为:172.17.0.4(你的可能不一样)
- 将上面的IP输入phpmyadmin中【服务器】中,输入用户名:root,密码:123456,点击【执行】,即可登陆:
注意: 这种部署方式,需要查找MySQL的IP,而这个IP可能会变化,存在不稳定因素。故推荐使用docker-compose,定义自己的bridge网络,完成部署
docker-compose部署
docker-compose的安装:Overview | Docker Documentation
-
先创建自定义的bridge网络,连接到自定义bridge网络上的容器,可以通过容器名称相互访问,无法关注对方的IP,执行下面的命令
docker network create mysql-net
-
编写docker-compose.yml文件。
version : '3' services: # MySQL容器 mysql_rdb: # 容器名 container_name: mysql_rdb # 重启策略 restart: always image: mysql:5.7.42 # 自定义的bridge网络 networks: - mysql-net ports: # 指定127.0.0.1,则MySQL无法通过其他主机访问,只能本地服务器访问,保障安全 - "127.0.0.1:3306:3306" volumes: # 挂挂载配置文件 - /home/Pdstars/mysql/conf:/etc/mysql/conf.d # 挂载数据 - /home/Pdstars/mysql/data:/var/lib/mysql environment: # root 密码 MYSQL_ROOT_PASSWORD: 123456 TZ: Asia/Shanghai # phpmyadmin容器 mysql_rdb_manage: container_name: mysql_rdb_manage image: phpmyadmin:latest ports: - 13306:80 environment: # 指定要连接的数据库,使用MySQL的容器名称 - PMA_HOST=mysql_rdb # 指定要连接数据库的端口 - PMA_PORT=3306 depends_on: # 依赖MySQL容器 - mysql_rdb networks: # 自定义的bridge网络 - mysql-net deploy: resources: limits: memory: 500M restart: always networks: # 自定义的bridge网络 mysql-net: external: true
-
将上面的docker-compose.yml放到服务器特定目录下,如
/home
。 -
启动使用docker compose命令启动,先删除原来分别部署的MySQL、phpmyadmin:
#删除原来的phpmyadmin docker rm -f myadmin #删除原来的MySQL docker rm -f mysql_rdb #启动docker-compose.yml docker compose up -d #有的版本的docker compose启动命令是 docker-compose up -d
-
启动后,访问登陆页:http://ip:13306,ip地址换成自己服务器的IP。页面如下:
- 此时,不用输入服务器地址,直接输入用户名:root,密码:123456,即可登陆。