比如我现在在本地开发完成了,需要打包部署到服务器上。 因为开发的时候好多配置项都是本地的,比如数据库连接啥的,部署到服务器上需要修改为正式的。
总不能在代码里把配置项修改了,然后在打包部署。完了开发的时候再改成测试的吧?
总不能在代码里把配置项修改了,然后在打包部署。完了开发的时候再改成测试的吧?
|
1
./server run --config prod.ini ./server run --config dev.ini ./server run --config local.ini
|
|
2
1、配置文件
2、配置管理中心,etcd 等方案很多 |
|
3
我写的玩具都是读取 Json 文件来获取配置。。。
|
|
ImmortalMay 21, 2019
4
你们配置不读文件的???
|
|
guyeuMay 21, 2019
6
emmmm 第一次见到配置 hardcode 在代码里的。。。
|
|
7
os.getenv()
|
|
8
服务器端灵活使用 git+docker,每次代码更新 git pull 后 docker 直接制作镜像 run 起来
|
|
wuchujieMay 21, 2019
9
@loveCoding 看了下 b 站的一个开源 web 库就是用这种方法读写配置文件。。但是不知道是 os.getenv() 读取同目录下的 config.json 好呢。还是用这种方法比较好。
|
|
10
|
|
messyideaMay 21, 2019
11
判断生产环境还是测试环境,然后用不同的数据库
|
|
xfridayMay 21, 2019
12
k8s+configMap
|
|
zichenMay 21, 2019
16
单独建一个配置文件的代码库,持续集成流水线部署的时候,会直接拉取对应环境的配置文件部署。
|
|
loveCodingMay 21, 2019
17
@wuchujie 相比读 path,配置文件可能会好点,毕竟跟着代码走,不用维护 path 什么的减少运维成本
|
|
wuchujieMay 21, 2019
18
@lonelygo
@xfriday @Muninn @zichen @loveCoding 能请教一下 docker 是怎么部署吗? 我现在一直以来的思路是抛开语言层面。比如 nodejs python 这些需要虚拟环境的语言。 我是用 docker 做一个包涵所有虚拟环境库的镜像。然后比如我的代码目录是 /home/deploy/app 我就映射 /home/deploy/app 进去镜像的根目录 /app 然后运行 python app.py 或者 node app.js 以后每次更新代码。我只需要在代码目录 git pull 然后 restart 一下容器就可以。。不用每次更新代码都打包一个镜像。 |
|
a134698815May 21, 2019
19
k8s+docker
|
|
KilerdMay 21, 2019
20
dotenv
|
|
MuninnMay 21, 2019
21
@wuchujie 那你基本白用 docker 了,一般不是那么用的。
基本都是每个版本靠持续集成自动测试和构建镜像。 生产部署可以自动,也可以手动。 大项目有很多容器用 k8s,小一点用 swarm 再小一点单机用 docker-compose。 配置是在配置中心或者在启动集群的配置文件里的。用环境变量传入容器。 |
|
wuchujieMay 21, 2019
22
@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 也给上传了。让人家看的一目了解 |
|
wuhongweiMay 21, 2019
23
参考 b 站
|
|
zclHITMay 21, 2019
24
配置文件中设置不同的环境配置,然后配置一个 RunMode,不同环境使用不同的 RunMode
|
|
boris1993May 21, 2019 via Android
25
公司不写 Go
自己的玩具是读 yaml 的,同时带有命令行开关 除了配置文件,也可以考虑读环境变量 但是绝对不要写死在代码里 |
|
gxm44May 21, 2019
26
dotenv + 1
|