问题描述
我有一个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之外替换属性文件不被认为是一种好习惯,强烈建议不要这样做。因此,仅建议将这些步骤用于测试。