首页 > 解决方案 > 如何覆盖docker容器中的属性文件?

问题描述

我有一个 docker 容器,里面有我的 springBoot 应用程序的 jar 文件。如何覆盖我的应用程序的 application.property 文件。假设如果我想更改数据源 url,我该如何通过命令行来做到这一点?

标签: spring-bootdockerdeploymentjarproperties-file

解决方案


  1. 运行docker ps并记下容器 id 的首字母。
  2. 运行docker exec -it <id> <bash or sh>,您将在运行的容器中。
  3. 转到您的 jar 目录。将您的属性文件作为 application.properties 放在 config/ 中。
  4. 重新运行您的应用程序,但请确保在后台执行此操作,以便您可以退出 docker。

您无法重新启动主进程 (PID 1)。对于该用例,您将需要外部卷并在属性文件更改时重新启动容器。

  1. 创建一个卷:docker volume create vol1,你会得到 /var/lib/docker/volumes/vol1/
  2. 更改目录组sudo chgrp 1001 /var/lib/docker/volumes/vol1/_data
  3. 添加对组的写访问权限:sudo chmod g+w /var/lib/docker/volumes/vol1/_data
  4. 检查目录的权限:sudo ls -al /var/lib/docker/volumes/vol1/. 他们应该是:drwxrwxr-x
  5. 下次运行容器时,将包含 jar 文件的文件夹挂载到卷中,如下所示:docker run -d --name=webApp1 --mount source=vol1,destination=/path/to/app -p port:port name
  6. 您可以更改属性文件/var/lib/docker/volumes/vol1/_data/并重新启动容器:docker restart container_name

免责声明:替换 jar 外部的属性文件不被认为是一种好的做法,强烈建议不要这样做。因此,这些步骤仅推荐用于测试。


推荐阅读