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

Docker部署Go服务遇多问题:网络互通、端口访问及Bash缺失

Go服务Docker配置问题及需求

配置详情

我的Go服务通过rules_docker配置如下:

name = "main_arm64",
    embed = [":server_lib"],
    goarch = "arm64",
    goos = "linux",
    visibility = ["//visibility:public"],
)

container_image(
    name = "ww_server_image",
    base = "@go_image_static_arm64//image",
    entrypoint = ["/main_arm64"],
    files = [":main_arm64"],
    ports = [
        "8080",
        "3306",
    ],
)

遇到的问题

GraphQL Playground运行在http://localhost:8080,尽管容器配置中已声明暴露该端口,但无法访问此UI界面。

需求目标

  • 能够访问容器内的GraphQL Playground及其他端口上的API
  • 实现Docker化的Go应用向独立的MySQL容器发起请求(不清楚如何通过rules_docker将两者置于同一网络)
  • 能够通过docker exec -it ... /bin/bash进入Docker容器(当前容器未安装Bash,且不知道如何通过container_image命令安装),当前报错信息:
OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

不同启动命令的现象

  • 执行docker run -p 8080:8080 IMAGE_ID:可以访问GraphQL Playground,但无法与MySQL容器通信
  • 执行docker run --network=host -p 8080:8080 IMAGE_ID:Go应用能成功与MySQL容器通信,但GraphQL Playground无法访问
  • 仅使用--network=bridge时能访问Playground,但疑惑MySQL容器启动时未指定网络,为何不在bridge网络中。MySQL容器启动命令如下:
docker run -p 3306:3306 --name my-db -e MYSQL_ROOT_PASSWORD=testing -d mysql:8.0.31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:45:36