现在我有多个通过 docker compose 启动的项目,每个项目都有自己的数据库容器,现在想查看数据库的数据。如果通过向外暴露端口查看,每个项目需要分配不同的端口,比较麻烦。有没有别的比较好的方法?
1
haimianbihdata 2023-09-20 03:12:10 +08:00 via Android
nginx 做入口
|
2
jinliming2 2023-09-20 03:13:41 +08:00 via iPhone
也许 unix domain sockets 文件?
mount 一个主机的目录进去,然后数据库应该都支持监听 unix sockets 的吧,unix sockets 文件放到 mount 的主机目录里,然后用这个文件来连接数据库? |
3
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 |
4
sofukwird 2023-09-20 03:20:16 +08:00 via Android
在里面再起一个 socks5 server ,通过 socks5 代理访问管理
|
5
rocmax 2023-09-20 06:38:58 +08:00 via Android
docker compose 里加个 phpMyAdmin 之类的管理工具 service ,用它连接多个数据库,只对外暴露管理工具的网页端口。
如果是一个项目一个 docker compose 的话就需要给它们配置成同一个 network |
6
LifeDesigner 2023-09-20 13:27:14 +08:00
我的解决方案是启动一个 https://github.com/dbeaver/cloudbeaver ,通过 container_name 链接到不同的数据库上
|
7
mmdsun 2023-09-20 17:10:11 +08:00
你的查看工具也按照到 docker 里面同一个网络,容器之间,直接容器名就能访问数据库了。
再把查看工具映射端口。 |