linux - 如何在 docker 容器中定义环境变量以与我的 jar 文件一起使用
问题描述
我有一个通过 jar 文件运行 java 进程的容器。(基于springboot应用程序)
我的 jar 使用容器中的 en vars,因此我的 application.yml 看起来像这样:
应用程序.yml:
spring:
profiles:
active: server
datasource:
url: ${DATASOURCE_URL}
databaseName:
serverName:
username: ${DATASOURCE_USERNAME}
password: ${DATASOURCE_PASSWORD}
dataSourceClassName: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
registerMbeans: true
maxPoolSize: ${DATASOURCE_MAXPOOLSIZE}
cachePrepStmts: true
prepStmtCacheSize: 250
prepStmtCacheSqlLimit: 2048
useServerPrepStmts: true
data:
couchbase:
nodes:
- ${COUCHBASE_NODE_1}
- ${COUCHBASE_NODE_2}
bucket: ${COUCHBASE_BUCKET}
password: ${COUCHBASE_PASSWORD}
port: ${COUCHBASE_PORT}
其中 , DATASOURCE_USERNAME
, DATASOURCE_PASSWORD
... 是容器本身的环境变量
我的问题是在哪里定义/声明 thos 变量,我试图将它包含在.bachrc
一个文件中,如下所示:
.bachrc:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
########## CONFIGS FILES ############
source $HOME/envfile.list
和envfile.list看起来像这样:
envfile.list:
DATASOURCE_USERNAME="aaa"
DATASOURCE_PASSWORD="bbb"
...
我的 pb 是我的 java 进程看不到这些变量,注意:我想显式设置这些变量,没有docker run -e
建议?
解决方案
你有没有想过用一个docker-compose.yml
文件来做一堆容器?它也可以只包含一个容器,但您可以使用environment:
树在其中添加环境变量。
docker run
然后,您需要安装而不是运行,docker-compse
然后可以启动您的堆栈(意味着文件中的所有容器docker-compose.yml
。
但是,您的入口点如何工作仍然很重要。如果它是二进制文件,它将在变量所在的环境中运行。如果它是另一个 shell 脚本,则该入口脚本将需要导出该变量以使其可用于下一个子进程。
您还可以做的是更改 dockerfile 的 ENTRYPOINT 并VAR=KEY
在其前面添加变量定义。它们将可用于子流程:
ENTRYPOINT variable1=value1 variable2=value2 myprocess.sh
如果您无法控制容器,则可以从原始图像构建自己的图像,只需更改入口点:
FROM other/image:latest
ENTRYPOINT variable1=value1 variable2=value2 myprocess.sh
显然,您要从原始图像中查找的是其 ENTRYPOINT 的外观,以便您可以按照需要的方式对其进行修改。
推荐阅读
- python - 密码重置激活链接
- flutter - 应用程序检查登录状态时如何设置加载屏幕?
- ajax - Openvidu 服务器 API REST 与 fetch
- c# - 是否有任何选项可以将构造函数添加到派生自 PSCmdlet 的类中
- python-3.x - 从推特上抓取推文的推文来源标签
- java - Java - 带括号的开关标签
- recursion - Neo4j - 递归模式匹配并返回特定叶节点的递归路径
- sql-server - 使用不同表或不同数据库时的 SQL 性能
- linux - 如何将数组值添加到文本文件中特定行的开头
- python - Odoo 服务器错误:元素'
' 不能位于父视图中