使用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 的編譯命令)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM