docker 起的 MySQL 如何在其他容器里使用?

2023-12-15 17:44:52 +08:00
 Rebron1900

我目前起了一个 MySQL ,一个 Ghost ,都是通过 docker-compose 文件拉的,目前是想在 Ghost 中使用 MySQL 容器提供的服务。

我目前的尝试是通过 docker network create -d bridge mysql-net 创建了一个网络,然后分别在 MySQL 、Ghost 的配置文件中通过networks 项配置,但是 up 的时候提示 service "mysql" refers to undefined network mysql-net: invalid compose projec

另外,我看很多都是把 MySQL 和主程序都写在一个 yml 文件里, 但是这样我就有个疑问,多个使用了 mysql 的服务,会产生资源浪费吗?

1870 次点击
所在节点    Docker
20 条回复
hefish
2023-12-15 17:47:07 +08:00
把主机的 3306 映射进容器啊。。
其他容器就连主机的 3306
leadfast
2023-12-15 17:50:05 +08:00
docker-compose.yml 文件里
```
app:
networks: ['mysqlnet']

networks:
mysqlnet:
external: true
```
storyxc
2023-12-15 18:00:13 +08:00
把服务放到同一个 docker 网络里 或者映射了端口通过宿主机的端口访问
zhangxudong
2023-12-15 18:04:01 +08:00
同一台机器,所有的容器共用一个 docker 网络
不同机器,要么用 docker-swarm 组网,要么把 3306 映射到宿主机上,其他机器连宿主机的 ip
julyclyde
2023-12-15 18:34:56 +08:00
你有没有发现
如果不用 docker ,这些问题你根本就不会遇到
lovelylain
2023-12-15 18:42:32 +08:00
@julyclyde 不用 docker-compose 就行
julyclyde
2023-12-15 18:44:33 +08:00
@lovelylain 按说 compose 也没多做啥事吧?只要(创建网络、把容器加入该网络)都做对了,应该和单独使用 docker 没什么区别啊

不过得看版本,旧 compose 好像缺一些功能

更简单的是根本别用
A01514035
2023-12-15 18:50:10 +08:00
非常喜欢 docker compose 。这样不会忘记 docker run 的时候用了哪些参数了。
至于你说的这个网络问题,我基本上都会指定网络,这样所有的服务都在同一个 docker 网络里了。
```yml
version: '3.3'
services:
alist:
restart: always
volumes:
- '/xxx/targz:/data'
- '/xxxx/alist:/opt/alist/data'
ports:
- '4035:5244'
container_name: alist
image: 'xhofe/alist:latest'
networks:
- mynet # 指定网络
networks:
mynet:
external: true
```
lovelylain
2023-12-15 18:57:32 +08:00
@julyclyde 学习成本高一些,OP 没用对
julyclyde
2023-12-15 18:59:41 +08:00
@lovelylain 主要是走弯路
docker (及其附属工具)是一个值得单独一学的东西
但是很多人都是在学其他东西的路上,看到文档说“我们提供了”于是就开始用,结果因为之前没好好学过,而遭遇了额外的麻烦,额外的麻烦!
julyclyde
2023-12-15 19:00:20 +08:00
@A01514035 你说的这个 compose 的好处,其实是 docker 本身的缺点
容器包含的信息量还是略少,缺少运行时的内容,甚至可以认为只交付了文件系统压缩包而已
chenqh
2023-12-15 19:05:52 +08:00
我记得好像可以不要 network,还是把 network 设置成 localhost 去了
A01514035
2023-12-15 19:11:10 +08:00
是的,我现在所有 docker 运行的应用都是转换成 docker compose 来使用。借楼求一个 docker run 转 docker compose yml 的工具,composerize 有点难用,有时候会出错。
rwecho
2023-12-15 19:26:34 +08:00
创建一个网络,可以在不同 docker-compose 访问
oneisall8955
2023-12-15 20:37:46 +08:00
思路正确,姿势不对
hs0000t
2023-12-15 20:40:22 +08:00
@A01514035 扔给 chatgpt 就行了
julyclyde
2023-12-15 20:40:51 +08:00
@A01514035 前几天/t/996880 有讨论
falcon05
2023-12-15 20:49:26 +08:00
mysql-net 设置 attachable 为 true

其他的应用连接到 mysql-net 时设置 external 为 true
BeautifulSoap
2023-12-15 20:59:04 +08:00
这帖子令人绷不住,2L 都基本把正确答案写出来了。。。。。
Rebron1900
2023-12-16 10:13:49 +08:00
@falcon05 @leadfast 可以了,感谢。

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

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

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

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

© 2021 V2EX