自動打包image並上傳到docker私人庫
Auto build and push image to private registry
1. 前置作業: 設置好private registry 的server
參考
官方: https://docs.docker.com/registry/
中文教學: https://ithelp.ithome.com.tw/articles/10191213
2. drone設定
drone secret
設定git相關username:password
.drone.yml
(被註解掉的設定可以自行嘗試看看)
kind: pipelinetype: dockername: ebus-kssteps:- name: test-and-releaseimage: node:12.14.0-busterenvironment:GIT_AUTHOR_NAME: {GIT_AUTHOR_NAME}GIT_AUTHOR_EMAIL: {GIT_AUTHOR_EMAIL}GIT_COMMITTER_NAME: {GIT_COMMITTER_NAME}GIT_COMMITTER_EMAIL: {GIT_COMMITTER_EMAIL}GIT_CREDENTIALS:from_secret: bitbucket_username_passwordcommands:- npm i --silent# - npm test# - npx semantic-releasewhen:branch:- master- development- name: build-and-pushimage: plugins/dockersettings:repo: cicd-so-happy.maxwin.com.tw:5000/ebus-ksregistry: cicd-so-happy.maxwin.com.tw:5000tags: ${DRONE_TAG}# tags:# - 1.0.2
#custom image tag# auto_tag: trueinsecure: true # turn this on# when:# event:# - tagwhen:branch:- master
3. 觸發drone自動打包並丟到private registry
//總之就是commit 到 branch master
git commit -m "test drone" && git push origin master
commit完成後觸發drone自動處理,drone成功打包並發佈到private registry會出現類似以下畫面
4. 本機(或是需要從private registry pull image的機器)設定docker
- 修改設定檔
設定檔位置mac or linux: /etc/docker/daemon.json
windows: C:\ProgramData\Docker\config\daemon.json
加入以下設定(registry不用加http://)
{
"insecure-registries": [
"{YOUR_PRIVATE_REGISTRY}:{YOUR_PRIVATE_REGISTRY_PORT}"
]
}
或是如下圖在desktop Docker app 中直接設定
- 設定好後重新啟動docker
linux(cmd): systemctl restart docker
mac or windows: desktop Docker app的右鍵選單中restart Docker
5. 從private registry pull image
用下列指令從你的private registry pull image下來
docker pull {YOUR_PRIVATE_REGISTRY}:{YOUR_PRIVATE_REGISTRY_PORT}
有pull image 下來就代表成功了!
其他相關文章參考
drone private registry: https://hackmd.io/-Ggi0uxvQpK9nnSz21a-fA
(drone 官方)drone plugins/docker: http://plugins.drone.io/drone-plugins/drone-docker/
(docker registry官方)docker registry: https://docs.docker.com/registry/