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

Docker Compose中能否通过网桥IP+自定义端口访问服务?

问题解答

实际访问情况

直接说结论:没法通过172.22.0.11:3307访问。

原因很简单:ports: - 3307:3306是把主机的3307端口转发到容器内部的3306端口,相当于在主机上开了个“中转站”,但容器自己的IP(172.22.0.11)上只监听了3306端口,根本没开3307端口,所以直接访问容器IP的3307端口自然连不上。

同时保留两项配置时,能用的访问方式还是原来两种:

  • 主机上用localhost:3307访问(走端口映射的中转)
  • 同一Docker网络里的其他容器,或者主机直接访问172.22.0.11:3306(走容器内网IP)

怎么实现172.22.0.11:3307访问?

要实现这个需求,得让MySQL容器本身监听3307端口,步骤如下:

  1. 写自定义MySQL配置文件
    创建一个my.cnf文件,内容如下:

    [mysqld]
    port=3307
    bind-address=0.0.0.0
    
  2. 修改Docker Compose配置
    把自定义配置挂载到容器里,同时按需调整端口映射(如果还要主机能访问的话):

    services:
      mysql:
        image: mysql:8.0
        volumes:
          - ./my.cnf:/etc/mysql/my.cnf  # 挂载自定义配置文件到容器
        networks:
          my_network:
            ipv4_address: 172.22.0.11
        ports:
          - 3307:3307  # 可选:主机端口映射到容器的3307端口
    
    networks:
      my_network:
        driver: bridge
        ipam:
          config:
            - subnet: 172.22.0.0/27
    
  3. 重启容器
    执行docker-compose down && docker-compose up -d重启服务后,就能通过172.22.0.11:3307访问MySQL了。如果保留了ports配置,主机侧也能继续用localhost:3307访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:25:19