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

请教一个问题

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 11

给你一个方案参考,哈:

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

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

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

5年前 评论

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

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

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

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

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

5年前 评论
xianyunyehe

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

5年前 评论
leung0826

可以使用 apollo

5年前 评论

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

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

5年前 评论

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

5年前 评论

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

5年前 评论
JANCE 5年前

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

5年前 评论

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