使用docker进行测试,保存并生成可执行文件

docker 命令:

docker run --rm -v "$PWD":/go/src/github.com/ymmb/test --privileged=true -w /go/src/github.com/ymmb/test golang:1.8.3 go build -v -o test

  1.第一次执行会从本地先查找golang:1.8.3镜像,如果没有找到,会从dockerhub上下载该镜像;

    如果找到则直接生成container,然后在docker中进行编译,并生成可执行文件。

  2.docker run --rm:先从镜像 golang:1.8.3 生成 container, 执行完成后删除 docker 环境,

    但是在docker中执行 go build -v -o test 后生成的 test 可执行文件会保留。

  3.如果该服务调用了vendor包,则当前目录下必须要vendor目录和包文件,

    gopath 路径下也不行,执行  docker必须在main.go的目录下  

命令解析:

  -v "$PWD":/go/src/github.com/ymmb/test: 将本地的文件夹 "PWD" 和 docker 中

   /go/src/github.com/ymmb/test 进行软连接关联(自动生成该目录),这样 docker 中 test 目录和本地 "PWD" 的目录就是一个了。


  --privileged=true:privileged 使 container 内的 root 拥有真正的 root 权限,如不加该命令,

   则没有写入 container 和外界关联目录的权限(踩了这块的坑,docker 执行完成后就是没有保留可执行文件)。


  -w /go/src/github.com/ymmb/test:设置容器的工作目录. (docker 中的默认 GOPATH: /go/src/,

   应当和 -v 所指定的 docker 中的目录一致,并在 -v 关联的 container 外执行该 docker 命令)

 

  go build -v:可以使命令把执行过程中构建的包名打印出来。

   (想要在 docker 中执行的命令,可以是 shell 或其他,这里是执行 go 的编译命令)

posted @ 2018-09-14 17:07  追逐~~~  阅读(1648)  评论(0编辑  收藏  举报