如何运行Docker容器但不复制密码文件来组装映像以及其他选项?

时间:2019-06-03 13:08:42

标签: java spring docker dockerfile

由于这与工作有关,所以我将做更多的伪代码,但这是问题所在。我正在构建一个图像,以使用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,所以不确定这是否是一个问题。

谢谢。

2 个答案:

答案 0 :(得分:1)

也许我误解了这个问题..但是您不能只是将文件批量装入容器中吗?

Docker Volumes

答案 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

的更多信息

如果看起来很复杂,您还有其他选择:

希望有帮助