# 實現自動化 build image https://docs.drone.io/pipeline/docker/syntax/volumes/host/ # 修改配置檔 掛載 Host Volumes ```yml kind: pipeline type: docker # 在 Docker 內部執行管道命令 name: clone # 可自行定義的名稱 steps: - name: build-golang # 事件一:可自行定義的名稱 image: activate.adobe.com/library/plugin-govendor # 使用 neil605164/plugin-govendor 容器 volumes: - name: cache path: /tmp/cache commands: # 需執行的指令 - mkdir -p /go/src/${DRONE_REPO_NAME} # 於 goroot 建立專案名稱的空資料夾 - ls -al /drone/src - rsync -r /tmp/cache/* /go/src/${DRONE_REPO_NAME} # 將 clone 的專案複製到 goroot 底下 - rsync -r /tmp/cache/build-image/Dockerfile /drone/src/Dockerfile # 將 clone 的專案複製到 goroot 底下 - ls -al /drone/src - go get -u github.com/gin-gonic/gin - cd /go/src/${DRONE_REPO_NAME} - ls -al /go/src/ - go build -o demo main.go # 編譯 golang 程式碼 - rsync -r /go/src/${DRONE_REPO_NAME}/demo /drone/src/demo # 將 clone 的專案複製到 goroot 底下 - name: build-image-push-harbor # 事件二:可自行定義的名稱 image: plugins/docker # 使用 plugins/docker 容器 settings: insecure : true username: admin password: Harbor12345 repo: 172.24.229.236/library/haha # harbor 私有庫存放位置 # auto_tag: true # tags: ${DRONE_TAG} registry: 172.24.229.236 # harbor 私有庫網址 debug: true volumes: - name: cache host: path: /home/x213212/demo/ ``` # main.go ```go package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "hello world") }) r.Run(":3000") } ``` 亂改中 # 取得最新 >docker pull 172.24.229.236/library/haha > # docker run > docker run -p 9999:3000 172.24.229.236/library/haha > 暴露端口,正常應該是要共用 package 不然每次部屬就慘囉! ![](https://i.imgur.com/Nvic1dV.png)