Rebron1900
V2EX  ›  Docker

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

By Rebron1900 at 2023 年 12 月 15 日 · 2944 次点击

我目前起了一个 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 的服务,会产生资源浪费吗?

20 条回复  •  2023-12-16 10:13:49 +08:00
hefish
   1
hefish  
   2023 年 12 月 15 日
把主机的 3306 映射进容器啊。。
其他容器就连主机的 3306
leadfast
   2
leadfast  
   2023 年 12 月 15 日
docker-compose.yml 文件里
```
app:
networks: ['mysqlnet']

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

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

更简单的是根本别用
A01514035
   8
A01514035  
   2023 年 12 月 15 日
非常喜欢 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
   9
lovelylain  
   2023 年 12 月 15 日 via Android
@julyclyde 学习成本高一些,OP 没用对
julyclyde
   10
julyclyde  
   2023 年 12 月 15 日
@lovelylain 主要是走弯路
docker (及其附属工具)是一个值得单独一学的东西
但是很多人都是在学其他东西的路上,看到文档说“我们提供了”于是就开始用,结果因为之前没好好学过,而遭遇了额外的麻烦,额外的麻烦!
julyclyde
   11
julyclyde  
   2023 年 12 月 15 日
@A01514035 你说的这个 compose 的好处,其实是 docker 本身的缺点
容器包含的信息量还是略少,缺少运行时的内容,甚至可以认为只交付了文件系统压缩包而已
simple2025
   12
simple2025  
   2023 年 12 月 15 日
我记得好像可以不要 network,还是把 network 设置成 localhost 去了
A01514035
   13
A01514035  
   2023 年 12 月 15 日
是的,我现在所有 docker 运行的应用都是转换成 docker compose 来使用。借楼求一个 docker run 转 docker compose yml 的工具,composerize 有点难用,有时候会出错。
rwecho
   14
rwecho  
   2023 年 12 月 15 日
创建一个网络,可以在不同 docker-compose 访问
itechify
   15
itechify  
   2023 年 12 月 15 日 via Android
思路正确,姿势不对
hs0000t
   16
hs0000t  
   2023 年 12 月 15 日 via Android
@A01514035 扔给 chatgpt 就行了
julyclyde
   17
julyclyde  
   2023 年 12 月 15 日
@A01514035 前几天/t/996880 有讨论
GG668v26Fd55CP5W
   18
GG668v26Fd55CP5W  
   2023 年 12 月 15 日 via iPhone
mysql-net 设置 attachable 为 true

其他的应用连接到 mysql-net 时设置 external 为 true
BeautifulSoap
   19
BeautifulSoap  
   2023 年 12 月 15 日
这帖子令人绷不住,2L 都基本把正确答案写出来了。。。。。
Rebron1900
   20
Rebron1900  
OP
   2023 年 12 月 16 日
@falcon05 @leadfast 可以了,感谢。
© 2026 V2EX · 169ms · 3.9.8.5