You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose:如何从应用容器访问Redis与MySQL独立容器?

连接容器化Redis/MySQL的实用方案

推荐:用Docker自定义网络(无需手动获取IP)

Docker默认的bridge网络不支持容器名DNS解析,自定义网络是更可靠的方式:

  1. 创建专属网络:
    docker network create app-shared-network
    
  2. 启动Redis/MySQL时加入该网络(指定容器名):
    • Redis:
      docker run -d --name redis-node --network app-shared-network redis
      
    • MySQL(记得替换密码):
      docker run -d --name mysql-node --network app-shared-network -e MYSQL_ROOT_PASSWORD=your_secure_pass mysql
      
  3. 启动应用容器时同样加入该网络:
    docker run -d --name my-app --network app-shared-network your-app-image
    
  4. 应用内直接用容器名作为连接地址:
    • Redis:redis://redis-node:6379
    • MySQL:mysql://root:your_secure_pass@mysql-node:3306
      自定义网络的DNS解析由Docker自动维护,容器重启IP变化也不影响连接,比硬编码IP稳定得多。

备选:获取容器IP地址(不推荐,IP可能变动)

如果必须使用IP,可用以下两种方式:

  1. 用docker inspect直接查询:
    • 查询Redis IP:
      docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis-node
      
    • 查询MySQL IP,只需把命令中的redis-node换成你的MySQL容器名即可。
  2. 进入应用容器后查询:
    先进入应用容器:
    docker exec -it my-app /bin/bash
    
    然后用nslookup redis-node或ping redis-node(需在同一网络)获取IP,或用ip a查看容器自身网络信息。

注意事项

  • 同一自定义网络内的容器无需使用-p参数暴露端口,仅当需要从宿主机外部访问时才需发布端口。
  • MySQL启动必须设置MYSQL_ROOT_PASSWORD等必要环境变量,否则容器会启动失败。

内容的提问来源于stack exchange,提问作者realtebo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:35:16