用 Docker 部署私有镜像太复杂了,大家看看怎么简化这个流程

2019-03-06 16:54:46 +08:00
 daijinming

修改一段代码到部署到服务器上,需要 5 步走( 1、编写代码 2、制作镜像 3、推送镜像到私有镜像库 4、更新本地镜像 5、重启容器 ),是不是有点太麻烦量?我在考虑怎么简化,需要开发自动化部署工具?,或有没有现成的方式?

9977 次点击
所在节点    程序员
57 条回复
4linuxfun
2019-03-07 08:17:33 +08:00
写 compose 啊
ipeony
2019-03-07 08:42:13 +08:00

假设 Jenkins 主要用来打包,打包通过 Docker 的 multistage-build 替代,就不依赖 Jenkins 了,仅供参考。
Dockerfile 示例:
https://gist.github.com/dongfg/aedd3eacd33094bc594786800c99da53
d5
2019-03-07 08:51:14 +08:00
daocloud 没烦恼
kinderlas
2019-03-07 10:32:55 +08:00
domeos 挺好用的
gz911122
2019-03-07 10:43:06 +08:00
@daijinming Java 的话可以看下谷歌的 jib
zeromake
2019-03-07 11:12:35 +08:00
@rayingecho #35 看了一会没有看懂打包镜像推送私有镜像和 k8s 有啥关系
donnior
2019-03-07 11:24:51 +08:00
自己的项目一个原则是能花钱的就不自己动手 ^_^, 所以我们用的 bitbucket 的 pipeline

1. 开发人员推送分支到 bitbucket
2. bitbucket 执行对应分支的 pipeline,构建 docker 镜像(用 tag 区分分支),上传到 docker hub (私有的)
3. docker compose 自动更新对应 dev,test,prod 的镜像

全程开发人员只需要推送代码;目前正在准备上 k8s
ospider
2019-03-07 11:36:48 +08:00
上 k8s 吧
jerray
2019-03-07 12:35:42 +08:00
推荐上一套 CI/CD,可以考虑用 drone ( drone.io ) —— docker 部署,CI 流程的每一步都是调用 docker 镜像执行,扩展非常方便,运维成本低,能很好地和 GitHub、GitLab、Bitbucket 集成。

图里的这几步除了编写代码,其他都可以自动执行。但是考虑到生产环境的问题,最后一步上线也可以配置成手动——执行完前面所有步骤包括更新线上镜像,最后用一条命令确认执行预先定义好的上线流程。
jakehu
2019-03-07 15:22:44 +08:00
本地->push(gitlab)->gitlab ci(gitlab runner)->docker push(registry Harbor)->K8s(pull)

最后在 gitlab ci 里面调用 K8s api 自动打包->自动更新
joesonw
2019-03-07 17:32:12 +08:00
真实案例:

本地 -> gitlab MR -> gitlab CI -> commit hash 作为镜像版本号推送到叮叮 -> 通过 helm 更新 devtest 的 k8s, 验证 -> Merge 进 master -> gitlab CI -> commit hash 作为镜像版本号推送到叮叮 -> 通过 helm 更新 staging 的 k8s -> 打 tag 发版本 -> gitlab CI -> commit hash 作为镜像版本号推送到叮叮 -> 通过 helm 更新 prod 的 k8s
kelvinblood
2019-03-07 18:41:28 +08:00
有现成的方案,Jenkins。
wmhx
2019-03-07 18:52:26 +08:00
Java 的话可以看下谷歌的 jib
szkoda
2019-03-07 19:45:06 +08:00
上 k8s 吧
windgreen
2019-03-07 19:50:14 +08:00
提交代码是手动的,后面构建镜像是自动的,部署可手动可自动
enrolls
2019-03-08 01:16:07 +08:00
godjob 的思路,+1。[docker-py]( https://docker-py.readthedocs.io/en/stable/ ) 了解一下。或者你把代码写完了,fabric 跑 2-5 环节可以鸭。
vampire2kk
2020-08-11 08:48:45 +08:00
@joesonw hello joesonw,想问下你们通过 helm 更新 k8s 时,用的 kube_token 是怎么获取的?方便的话可以私下请教么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/541808

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX