Docker 内运行数据库有没有比较好的方法去查看数据?

2023-09-20 02:33:03 +08:00
 purolle

现在我有多个通过 docker compose 启动的项目,每个项目都有自己的数据库容器,现在想查看数据库的数据。如果通过向外暴露端口查看,每个项目需要分配不同的端口,比较麻烦。有没有别的比较好的方法?

1786 次点击
所在节点    程序员
8 条回复
haimianbihdata
2023-09-20 03:12:10 +08:00
nginx 做入口
jinliming2
2023-09-20 03:13:41 +08:00
也许 unix domain sockets 文件?
mount 一个主机的目录进去,然后数据库应该都支持监听 unix sockets 的吧,unix sockets 文件放到 mount 的主机目录里,然后用这个文件来连接数据库?
8rmEHZ8WhVHVOb0E
2023-09-20 03:19:16 +08:00
你的 docker-compose.yml 文件里可以指定目录映射,可以把配置和数据从宿主目录映射给容器,这样方便修改,容器挂了数据也好恢复,例:

services:
mysql:
image: 'mysql:8.0'
container_name: mysql_server
volumes:
- ./data:/var/lib/mysql # :前面是宿主机目录,绝对路径或者相对 docker-compose.yml ,后面是容器目录
- ./logs:/var/log/mysql
- ./conf.d:/etc/mysql/conf.d
sofukwird
2023-09-20 03:20:16 +08:00
在里面再起一个 socks5 server ,通过 socks5 代理访问管理
rocmax
2023-09-20 06:38:58 +08:00
docker compose 里加个 phpMyAdmin 之类的管理工具 service ,用它连接多个数据库,只对外暴露管理工具的网页端口。
如果是一个项目一个 docker compose 的话就需要给它们配置成同一个 network
LifeDesigner
2023-09-20 13:27:14 +08:00
我的解决方案是启动一个 https://github.com/dbeaver/cloudbeaver ,通过 container_name 链接到不同的数据库上
mmdsun
2023-09-20 17:10:11 +08:00
你的查看工具也按照到 docker 里面同一个网络,容器之间,直接容器名就能访问数据库了。
再把查看工具映射端口。
purolle
2023-09-20 22:53:05 +08:00
@mmdsun 这个方案好,感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/975373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX