1
loveCoding 2019-05-21 10:26:59 +08:00 1
./server run --config prod.ini ./server run --config dev.ini ./server run --config local.ini
|
2
godgrp 2019-05-21 10:27:52 +08:00 2
1、配置文件
2、配置管理中心,etcd 等方案很多 |
3
kwanzaa 2019-05-21 10:29:22 +08:00 1
我写的玩具都是读取 Json 文件来获取配置。。。
|
4
Immortal 2019-05-21 10:38:19 +08:00
你们配置不读文件的???
|
6
guyeu 2019-05-21 10:49:59 +08:00
emmmm 第一次见到配置 hardcode 在代码里的。。。
|
7
tjyao520 2019-05-21 10:50:17 +08:00 1
os.getenv()
|
8
BCy66drFCvk1Ou87 2019-05-21 10:53:18 +08:00 1
服务器端灵活使用 git+docker,每次代码更新 git pull 后 docker 直接制作镜像 run 起来
|
9
wuchujie 2019-05-21 11:11:26 +08:00
@loveCoding 看了下 b 站的一个开源 web 库就是用这种方法读写配置文件。。但是不知道是 os.getenv() 读取同目录下的 config.json 好呢。还是用这种方法比较好。
|
10
Muninn 2019-05-21 11:11:33 +08:00 3
|
11
messyidea 2019-05-21 11:16:31 +08:00
判断生产环境还是测试环境,然后用不同的数据库
|
12
xfriday 2019-05-21 11:22:19 +08:00
k8s+configMap
|
16
zichen 2019-05-21 11:33:42 +08:00
单独建一个配置文件的代码库,持续集成流水线部署的时候,会直接拉取对应环境的配置文件部署。
|
17
loveCoding 2019-05-21 11:36:14 +08:00
@wuchujie 相比读 path,配置文件可能会好点,毕竟跟着代码走,不用维护 path 什么的减少运维成本
|
18
wuchujie 2019-05-21 11:46:00 +08:00
@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 一下容器就可以。。不用每次更新代码都打包一个镜像。 |
19
a134698815 2019-05-21 12:30:15 +08:00
k8s+docker
|
20
Kilerd 2019-05-21 13:02:44 +08:00
dotenv
|
21
Muninn 2019-05-21 15:15:07 +08:00
@wuchujie 那你基本白用 docker 了,一般不是那么用的。
基本都是每个版本靠持续集成自动测试和构建镜像。 生产部署可以自动,也可以手动。 大项目有很多容器用 k8s,小一点用 swarm 再小一点单机用 docker-compose。 配置是在配置中心或者在启动集群的配置文件里的。用环境变量传入容器。 |
22
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 也给上传了。让人家看的一目了解 |
23
wuhongwei 2019-05-21 16:15:29 +08:00
参考 b 站
|
24
zclHIT 2019-05-21 16:42:46 +08:00
配置文件中设置不同的环境配置,然后配置一个 RunMode,不同环境使用不同的 RunMode
|
25
boris1993 2019-05-21 16:55:06 +08:00 via Android
公司不写 Go
自己的玩具是读 yaml 的,同时带有命令行开关 除了配置文件,也可以考虑读环境变量 但是绝对不要写死在代码里 |
26
gxm44 2019-05-21 19:52:52 +08:00
dotenv + 1
|