【问题标题】:How to dockerize customized Apache Karaf server based application?如何对接定制的基于 Apache Karaf 服务器的应用程序?
【发布时间】:2018-10-12 08:49:17
【问题描述】:
我们使用定制的 apache karaf 服务器来部署 OSGI 包。我们有一个安装程序,它安装定制的 apache karaf 以及 OSGI 包,并作为 Linux 服务整体运行。安装程序的问题是它需要在捆绑包所需的属性文件中配置的动态参数。从 docker 的角度来看,我们在容器中运行安装程序并手动更新配置文件,所以每次如果我使用相同的图像来生成新的容器,我需要手动更新配置文件。是正确的方式吗?
【问题讨论】:
标签:
docker
docker-compose
dockerfile
docker-machine
boot2docker
【解决方案1】:
让我们从这里开始:
“我们正在容器中运行安装程序并手动更新配置文件”
为了简单起见,我们还假设您有一个独立的 Docker 守护进程
启动并运行(没有 Swarm 或 Kubernetes 编排器)。
您的问题如下:
"所以每次如果我使用相同的图像来生成新的容器,我都需要手动更新配置文件"
为了减少任何人工干预,您可以使用已经编写好的属性文件。
这些文件将存储在 Docker 主机的文件系统中的某个位置。您还需要知道属性文件在容器的虚拟文件系统中的位置。
此时,使用 Docker CLI,您可以运行以下命令:
docker run ... -v /the-path/on/the-docker-host-filesystem/to-properties-directory:/file-location/inside-the-container/to-properties ... docker_img: img_version ...
注意:
- 在前面的命令中,我省略了容器的任何特定配置,我假设所有属性文件都位于同一目录中;
- 这种方法无法在生产中扩展。
获取有关如何使用 Docker 卷的更多信息
查看以下 Docker 文档页面here。
在 Docker Swarm 环境中,您可以使用配置对象。
要更好地了解配置是什么以及如何使用它们,请查看here。