开源测试工具 七牛云 goc docker 部署

少年 · 2020年06月28日 · 最后由 lichongyang 回复于 2023年09月01日 · 4069 次阅读

goc-docker

基于七牛云 goc 工具,使用 docker-compose 的方式编排,多个 app 服务共用一个 goc server。

其中,simple-go-server 我改成了动态指定端口启动,避免多个 app 启动端口冲突。

项目: shaonianyr/goc-docker

在此,也向项目推广者 @CarlJi 和项目的所有 contributors 致敬。

Usage

git clone https://github.com/ShaoNianyr/goc-docker
cd goc-docker
docker-compose up -d
docker-compose logs

View

Docker-compose

version: '2'

services:

  goc:
    image: shaonian/goc:v1.0
    network_mode: host
    ports:
      - "7777:7777"
    command:
      - ./goc
      - server

  app_1:
    image: shaonian/simple-go-server:v1.0
    restart: always
    network_mode: host
    ports:
      - "5000:5000"
    command:
      - ./simple-go-server
      - :5000
    depends_on:
      - goc

  app_2:
    image: shaonian/simple-go-server:v1.0
    restart: always
    network_mode: host
    ports:
      - "5001:5001"
    command:
      - ./simple-go-server
      - :5001
    depends_on:
      - goc

Contributing

goc

simple-go-server

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 15 条回复 时间 点赞

docker 部署,被测服务会向注册服务注册一个 ip:端口,但这个端口在启动容器时没有被指定,只是指定了项目端口,这个你是怎么解决的?

John 回复

这个注册的 ip 是多少无所谓,你只要访问项目的指定端口进行测试,然后登录到这个项目的容器内部执行,goc profile > coverage.out && go tool cover -func=coverage.out,得到的也是这个容器的覆盖率结果。

少年 回复

后端都是部署在 k8s 上,几乎不可能一个个去容器里拿结果,手工太麻烦了,我现在倒是想直接把端口定死,这样容器启动时把端口加上,直接通过这个端口拿数据,本地输出覆盖率文件

John 回复

那你得改下代码,我看了一下源码好像并没有找到可以指定端口设置,随机开个端口连接了。

func newLocalListener() net.Listener {
    l, err := net.Listen("tcp", "127.0.0.1:0")
    if err != nil {
        if l, err = net.Listen("tcp6", "[::1]:0"); err != nil {
            log.Fatalf("failed to listen on a port: %v", err)
        }
    }
    return l
}
少年 回复

可以在 pkg/cover/instrument 修改端口,不过反馈给作者他们说会加一个指定端口的选项,我自己是直接写死了😂 😂

if nonLocalIPV4 != "" {
host = fmt.Sprintf("%s:%d", nonLocalIPV4, ln.Addr().(*net.TCPAddr).Port)
} else {
host = fmt.Sprintf("%s:%d", localIPV4, ln.Addr().(*net.TCPAddr).Port)
}

John 回复

改这里那服务中心岂不是只能注册指定端口的一个服务了😂 在 run 指令里面加个环境变量指定注册端口应该好一点

少年 回复

是的,加参数指定端口更合适

https://github.com/qiniu/goc/releases/tag/v1.1.0
最新版本已经支持指定端口了,可以尝试下~

Changjun Ji 回复

老哥稳!

@ 少年 楼主 docker pull goc(shaonian/goc)失败。
提示 pull access denied for shaonian/goc, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
请问:是 docker 配置错误还是别的,另外在 docker 官网确实没有搜到镜像 shaonian/goc

少年 #11 · 2020年10月28日 Author
水杨 回复

要带 tag,docker pull shaonian/goc:v1.0

你直接用 docker-compose 起不就完了,干嘛一个个单独拉。

少年 回复

我就是用 docker-compose 起的,就是那个提示。然后我去https://hub.docker.com/上搜索 shaonian,发现没有 goc 镜像。不知道哪里操作失败了,多谢回复哈

少年 #13 · 2020年10月29日 Author
水杨 回复

传错地方了,已上传,再试一下~

少年 回复

这下可以拉取到镜像了,使用 docker-compose 可以起来了。3q

请问 goc 容器和另外两个 demo 容器起来之后该怎么使用呢?使用 goc 命令提示找不到,研究了半天没研究明白,求指教

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册