由于这与工作有关,所以我将做更多的伪代码,但这是问题所在。我正在构建一个图像,以使用Dockerfile
在容器内运行spring Web应用程序。当我从eclipse运行我的tomcat服务器以及使用docker run在容器内部运行时,这在本地运行良好。这就是问题所在。当我使用docker文件构建映像时,我创建了一个配置文件夹:
RUN mkdir -p /pathToConfig/config
然后我将密码文件复制到此配置文件夹中:
COPY ./locationOfPassowrdFile/passwords.properties /pathToConfig/config
EXPOSE myPort
CMD java -jar -DpropertySource="file:/pathToConfig/config/passwords.properties" ....more launchCode...... WARFILENAME.WAR
我已经研究过秘密,但是我无法将它们联系起来。例如,我想知道是否有一种方法可以使用passwords.properties
文件创建一个秘密,然后当我使用CMD
启动APP时...可以在其中链接它吗?似乎很简单,但我无法将这些想法融合在一起。另外,我没有使用K8或Swarm,所以不确定这是否是一个问题。
谢谢。
答案 0 :(得分:1)
也许我误解了这个问题..但是您不能只是将文件批量装入容器中吗?
答案 1 :(得分:0)
我的理解是,您需要在运行时将一些秘密配置传递给docker容器。 通过创建撰写文件,您可以使用Docker机密(即使您不运行任何群集):
项目结构:
|- Dockerfile
|- docker-compose.yml
|- pathToConfig
|- config
|- passwords.properties
docker-compose.yml
内容:
version: "3.6"
services:
my_service:
build:
dockerfile: Dockerfile
context: .
entrypoint: 'java -jar -DpropertySource="file:/run/secrets/my_secret" ...'
secrets:
- my_secret
secrets:
my_secret:
file: /pathToConfig/config/passwords.properties
从项目的根目录运行以下命令以构建映像并运行容器:
docker-compose up --build my_service
在运行时,passwords.properties
被映射到/run/secrets/my_secret
,应用程序将能够读取
从该位置进行配置。有关机密配置here
如果看起来很复杂,您还有其他选择:
希望有帮助