大佬们你们的 go 项目打包到部署的流程是怎么样的

2019-05-21 10:23:58 +08:00
 imherer
比如我现在在本地开发完成了,需要打包部署到服务器上。 因为开发的时候好多配置项都是本地的,比如数据库连接啥的,部署到服务器上需要修改为正式的。

总不能在代码里把配置项修改了,然后在打包部署。完了开发的时候再改成测试的吧?
7198 次点击
所在节点    Go 编程语言
27 条回复
Muninn
2019-05-21 15:15:07 +08:00
@wuchujie 那你基本白用 docker 了,一般不是那么用的。

基本都是每个版本靠持续集成自动测试和构建镜像。

生产部署可以自动,也可以手动。

大项目有很多容器用 k8s,小一点用 swarm 再小一点单机用 docker-compose。

配置是在配置中心或者在启动集群的配置文件里的。用环境变量传入容器。
wuchujie
2019-05-21 16:13:49 +08:00
@Muninn 请教一下。如果按照小一点单机 docker-compose 来处理的话。。正常的配置文件应该怎么写比较好。
比如 redis -> ip:port mysql-> ip:port user:password 这些好像不能打包进镜像里面 config.yaml 或者 config.json 吧?

我有个思路是代码层读取环境变量 比如 go python 初始化项目的时候 读取一下+格式化一下 env['redis'] 和 env['mysql']
然后在 docker-compose 写好 environment 这样可以吗?但是会不会导致上传代码的时候 docker-compose 也给上传了。让人家看的一目了解
wuhongwei
2019-05-21 16:15:29 +08:00
参考 b 站
zclHIT
2019-05-21 16:42:46 +08:00
配置文件中设置不同的环境配置,然后配置一个 RunMode,不同环境使用不同的 RunMode
boris1993
2019-05-21 16:55:06 +08:00
公司不写 Go
自己的玩具是读 yaml 的,同时带有命令行开关
除了配置文件,也可以考虑读环境变量
但是绝对不要写死在代码里
gxm44
2019-05-21 19:52:52 +08:00
dotenv + 1
Muninn
2019-05-21 20:32:51 +08:00
@wuchujie compose file 不放代码库里的,你可以放一个隐藏掉关键信息的 example。 部署的时候只需要这一个文件就行了,你也不需要把 repo clone 下来呀。

现在还有一个选择是用 docker secret。 这样部署的服务器上也看不到敏感信息了。 不过需要在代码里兼容读取。

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

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

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

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

© 2021 V2EX