V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Rebron1900
V2EX  ›  Docker

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

  •  
  •   Rebron1900 · 351 天前 · 1853 次点击
    这是一个创建于 351 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我目前起了一个 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  
       351 天前
    把主机的 3306 映射进容器啊。。
    其他容器就连主机的 3306
    leadfast
        2
    leadfast  
       351 天前
    docker-compose.yml 文件里
    ```
    app:
    networks: ['mysqlnet']

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

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

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

    其他的应用连接到 mysql-net 时设置 external 为 true
    BeautifulSoap
        19
    BeautifulSoap  
       351 天前
    这帖子令人绷不住,2L 都基本把正确答案写出来了。。。。。
    Rebron1900
        20
    Rebron1900  
    OP
       351 天前
    @falcon05 @leadfast 可以了,感谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2719 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:32 · PVG 15:32 · LAX 23:32 · JFK 02:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.