在代码中检索当前环境(Kotlin,Docker)
我想检索有关应用程序运行位置的信息 假设我有一个DEV和PROD环境。在我的代码中,我希望检索应用程序正在运行的环境的链接,例如:在代码中检索当前环境(Kotlin,Docker),docker,kotlin,Docker,Kotlin,我想检索有关应用程序运行位置的信息 假设我有一个DEV和PROD环境。在我的代码中,我希望检索应用程序正在运行的环境的链接,例如: 如果在开发环境中:https://dev.mycompany.com/myproduct/app 如果在产品环境中:https://mycompany.com/myproduct/app 任何提示?只需将其作为环境变量(例如,APP\u ENV)传递给您的应用程序,并使用System.getenv(“APP\u ENV”)访问它。顺便说一句,是的 传递给容器的方
- 如果在开发环境中:
https://dev.mycompany.com/myproduct/app
- 如果在产品环境中:
https://mycompany.com/myproduct/app
任何提示?只需将其作为环境变量(例如,
APP\u ENV
)传递给您的应用程序,并使用System.getenv(“APP\u ENV”)
访问它。顺便说一句,是的
传递给容器的方式因启动方式而异
码头工人赛跑
传递变量,或将其存储在文件中,然后通过--env file
传递整个文件:
docker run-e VAR1--env APP_env=dev--env file./env您的_图像:最新
Docker compose
(注意,它们在文档中设置了NODE_ENV
变量,就像您的案例一样!):
库伯内特斯
:
在k8s中,您可以在环境变量中添加另一个值,因此环境可以存储在元数据中
当然,还有其他方法可以为应用程序提供价值,如:
- 代码生成和构建时替换。例如,它可以用来提供Git revision:Git rev parse的输出被替换到代码中的某个地方。需要额外的构建配置+对于不同的环境,您将需要不同的构建
- 程序参数。只需运行
。与环境变量非常相似,但IMHO有一个缺陷:程序参数只能在程序的入口点(应用程序arg1 arg2。。。开发。。。argn
)中访问,因此您需要解析它们并传递到应用程序的其他部分。我可以很好地进行一些动态输入,但对于静态数据(如应用程序的环境)不方便main
- 供应商元数据,如EC2。需要特定的API才能访问
version: '3'
services:
app:
image: 'your_image:latest'
env_file:
- ./env
environment:
- APP_ENV=dev
spec:
containers:
- name: app
image: your_app:latest
env:
- name: APP_ENV
value: "dev"