spring-boot - 如何覆盖docker容器中的属性文件?
问题描述
我有一个 docker 容器,里面有我的 springBoot 应用程序的 jar 文件。如何覆盖我的应用程序的 application.property 文件。假设如果我想更改数据源 url,我该如何通过命令行来做到这一点?
解决方案
- 运行
docker ps
并记下容器 id 的首字母。 - 运行
docker exec -it <id> <bash or sh>
,您将在运行的容器中。 - 转到您的 jar 目录。将您的属性文件作为 application.properties 放在 config/ 中。
- 重新运行您的应用程序,但请确保在后台执行此操作,以便您可以退出 docker。
您无法重新启动主进程 (PID 1)。对于该用例,您将需要外部卷并在属性文件更改时重新启动容器。
- 创建一个卷:
docker volume create vol1
,你会得到 /var/lib/docker/volumes/vol1/ - 更改目录组
sudo chgrp 1001 /var/lib/docker/volumes/vol1/_data
- 添加对组的写访问权限:
sudo chmod g+w /var/lib/docker/volumes/vol1/_data
- 检查目录的权限:
sudo ls -al /var/lib/docker/volumes/vol1/
. 他们应该是:drwxrwxr-x
- 下次运行容器时,将包含 jar 文件的文件夹挂载到卷中,如下所示:
docker run -d --name=webApp1 --mount source=vol1,destination=/path/to/app -p port:port name
- 您可以更改属性文件
/var/lib/docker/volumes/vol1/_data/
并重新启动容器:docker restart container_name
免责声明:替换 jar 外部的属性文件不被认为是一种好的做法,强烈建议不要这样做。因此,这些步骤仅推荐用于测试。
推荐阅读
- java - 如何以编程方式为选定的实体字段绑定休眠类型?
- r - 包安装问题前导错误: failed to lock directory
- python - 通过 Django QuerySet 注释反向相关对象
- python - 数据框索引上的 Pandas 交叉表
- xslt-2.0 - 如何在单个 xpath 中为此编写谓词?
- mysql - 如何将mysql行转换为没有标签的列
- python - 我需要从 PDF 文件中提取文本并制作一个新的 .txt 文件以放入
- python - 错误 1053:“服务未及时响应”
- visual-studio - “解析应用程序包时出错。” 从 Web (MSIX) 打开 Windows 10 .appinstaller 文件时
- swift - 如何在桌子上创建两个不同的部分?