在生产环境中如何更新 .env 文件?

请教一个问题

我本地的 .env 文件更新了,然后将更新的内容也同时更新到 .env.example 文件中,然后再将 .env.example 提交到代码库,那么在生产服务器上将 .env.example 文件更新之后, 如何将更新的内容放到 .env 文件中去呢?还是只能手动去修改 .env 文件?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 11

给你一个方案参考,哈:

生产环境配置保存到.env.prod,测试环境配置保存到.env.test,开发环境配置保存到.env.local(或dev),这3个文件都提交到版本库。内容有变化时,直接提交更新到版本库。
在不同的环境下,将文件.env做软链接到对应的文件,比如生产环境,.env文件软链接到.env.prod。另.env文件不提交版本库。

4年前 评论
半人间 4年前
奔跑啊超超 (作者) 4年前

如果就一套环境,没必要搞那么麻烦,手动调整一下安全放心

4年前 评论

@Xingchao 我觉得这是个好方法,不过我不推荐 .env.prod 放在代码库中,因为这块会有生产的数据库等机密信息,可以使用一个对象存储服务器,例如阿里的 OSS。将 .env.prod 放进去,部署的时候,去这里拉文件即可。

4年前 评论
奔跑啊超超 4年前

@lxping 但是如果是放到 OSS 的话,也可以不做软链了吧?在 CD 的时候指定保存为 .env 文件即可

wget <URL FOR ENV PRODUCTION> -O <WEB DIRECTORY>/.env
4年前 评论

@Tsukasa_Kanzaki 是的,而且 OSS 跟 ECS 之间可以很容易解决权限的问题。各大云产商都其实有一套这种解决方案,比如: aws s3 & ec2

4年前 评论
xianyunyehe

放到oss里。自动发布的时候,把最新的文件拉回来跟代码一起打包发布

4年前 评论
leung0826

可以使用 apollo

4年前 评论

用 ETCD 或 consul 保存配置信息,然后在线上和线下环境中使用 confd 来订阅配置并更新到.env 配置文件

可以参考:使用 Consul 管理配置

4年前 评论

我觉得还是手动吧,本身框架没有这方面的设计,改个一个两个配置项也不会耗费多少时间的。

4年前 评论

都是打包在镜像里面的。当 Docker 遇到 CI/CD,让 DevOps 落地于实践、了解一下。
传统的做法、关于环境配置参数而言,不同的环境有不同的参数与参数值,配置数据敏感信息,不能放在仓库,运维来维护就行。

4年前 评论
JANCE 3年前

.env文件可能包含重要的私密信息,不应该提交到代码库。如果要更新线上环境其实也不难,使用 XShell 直接将.env文件拖拽到线上项目根目录即可(先删除项目里已经存在的.env文件,不然拖不进去)

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!