如何覆盖 docker 容器中的 属性 文件?

how to overwrite property files in a docker container?

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

  1. 运行 docker ps 并记下您的容器 ID 的首字母。
  2. 运行 docker exec -it <id> <bash or sh>,您将进入 运行ning 容器。
  3. 转到您的 jar 目录。将您的属性文件作为 application.properties.
  4. 放在 config/ 中
  5. 重新运行你的应用程序,但一定要在后台执行,这样你就可以退出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 之外替换属性文件被认为不是一个好的做法,非常不鼓励。因此,这些步骤仅建议用于测试。