我目前起了一个 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 的服务,会产生资源浪费吗?
1
hefish 2023-12-15 17:47:07 +08:00
把主机的 3306 映射进容器啊。。
其他容器就连主机的 3306 |
2
leadfast 2023-12-15 17:50:05 +08:00
docker-compose.yml 文件里
``` app: networks: ['mysqlnet'] networks: mysqlnet: external: true ``` |
3
storyxc 2023-12-15 18:00:13 +08:00
把服务放到同一个 docker 网络里 或者映射了端口通过宿主机的端口访问
|
4
zhangxudong 2023-12-15 18:04:01 +08:00
同一台机器,所有的容器共用一个 docker 网络
不同机器,要么用 docker-swarm 组网,要么把 3306 映射到宿主机上,其他机器连宿主机的 ip |
5
julyclyde 2023-12-15 18:34:56 +08:00
你有没有发现
如果不用 docker ,这些问题你根本就不会遇到 |
6
lovelylain 2023-12-15 18:42:32 +08:00 via Android
@julyclyde 不用 docker-compose 就行
|
7
julyclyde 2023-12-15 18:44:33 +08:00
@lovelylain 按说 compose 也没多做啥事吧?只要(创建网络、把容器加入该网络)都做对了,应该和单独使用 docker 没什么区别啊
不过得看版本,旧 compose 好像缺一些功能 更简单的是根本别用 |
8
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 ``` |
9
lovelylain 2023-12-15 18:57:32 +08:00 via Android
@julyclyde 学习成本高一些,OP 没用对
|
10
julyclyde 2023-12-15 18:59:41 +08:00
@lovelylain 主要是走弯路
docker (及其附属工具)是一个值得单独一学的东西 但是很多人都是在学其他东西的路上,看到文档说“我们提供了”于是就开始用,结果因为之前没好好学过,而遭遇了额外的麻烦,额外的麻烦! |
11
julyclyde 2023-12-15 19:00:20 +08:00
@A01514035 你说的这个 compose 的好处,其实是 docker 本身的缺点
容器包含的信息量还是略少,缺少运行时的内容,甚至可以认为只交付了文件系统压缩包而已 |
12
chenqh 2023-12-15 19:05:52 +08:00
我记得好像可以不要 network,还是把 network 设置成 localhost 去了
|
13
A01514035 2023-12-15 19:11:10 +08:00
是的,我现在所有 docker 运行的应用都是转换成 docker compose 来使用。借楼求一个 docker run 转 docker compose yml 的工具,composerize 有点难用,有时候会出错。
|
14
rwecho 2023-12-15 19:26:34 +08:00
创建一个网络,可以在不同 docker-compose 访问
|
15
oneisall8955 2023-12-15 20:37:46 +08:00 via Android
思路正确,姿势不对
|
18
falcon05 2023-12-15 20:49:26 +08:00 via iPhone
mysql-net 设置 attachable 为 true
其他的应用连接到 mysql-net 时设置 external 为 true |
19
BeautifulSoap 2023-12-15 20:59:04 +08:00
这帖子令人绷不住,2L 都基本把正确答案写出来了。。。。。
|
20
Rebron1900 OP |