如何使用 Dockerfile 安装 karaf 功能
How to install karaf features using Dockerfile
我正在尝试创建一个 Dockerfile,它将自动安装 apache karaf 并将其配置为正常工作。
我要安装功能列表。我可以用下面的
docker exec -it 7447419c89da /opt/karaf/bin/client
但我想使该过程自动化。我可以 运行 使用什么命令来安装这些功能?
您可以使用 XML 文件 (Feature Repository] 并将其复制到 .../apache-karaf-4.1.5/deploy文件夹。然后它将由 Karaf 在 start-time 期间 picked-up 并且文件中描述的功能将自动安装,如果它们具有指定的属性:install="auto"
.
示例文件:
<features
name="AET Features"
xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
<repository>mvn:org.apache.cxf.karaf/apache-cxf/3.2.0/xml/features</repository>
<feature name="fooo" version="1.0.0" description="Features that should be installed" install="auto">
<feature>cxf-core</feature>
<feature>webconsole</feature>
<bundle>mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.features/4.1.2</bundle>
</feature>
</features>
这将安装名为 fooo 的新功能,其中包含 cxf-core 功能 - 仅用于此示例(此需要自己的存储库位置),Karaf 上可用的 webconsole 功能和在 Web 控制台中提供功能视图的附加包。
总结一下:
- 下载解压Karaf
- 创建一个具有某个名称的文件,即:
required-features.xml
具有功能描述
- 启动 Karaf 实例
您可以在 Karaf 源中找到特征文件的示例,例如:
https://github.com/apache/karaf/blob/master/assemblies/features/spring/src/main/feature/feature.xml
TL;DR - 将特征作为参数传递给 client
作为 docker exec -it 7447419c89da /opt/karaf/bin/client -r 7 "feature:install http; feature:install webconsole"
我认为 是正确的,它应该是这样工作的。
然而,当我构建 my own Dockerfile for iDempiere Micro on Karaf to automatically install Apache Karaf、安装其他功能(例如 WebConsole)并部署我的包时,我发现实现此目的的唯一方法是:
- 在 Dockerfile 中安装 Apache Karaf,还包括其他帮助程序 shell 脚本,请勿尝试安装功能
- 用 Karaf 启动 docker,让它启动并等待一段时间(在我的测试环境中,它最多需要 120 秒才能准备好)
- 运行
/opt/karaf/bin/client
如您的问题一样,并将所需的功能作为参数传递给 docker exec -i idempiere-micro-karaf /opt/karaf/bin/client -r 7 "feature:install http; feature:install http-whiteboard; feature:install war; feature:install webconsole"
- 再等等,使用
docker exec -i idempiere-micro-karaf /opt/karaf/bin/client "system:shutdown -f -r"
重启Apache Karaf
我正在尝试创建一个 Dockerfile,它将自动安装 apache karaf 并将其配置为正常工作。
我要安装功能列表。我可以用下面的
docker exec -it 7447419c89da /opt/karaf/bin/client
但我想使该过程自动化。我可以 运行 使用什么命令来安装这些功能?
您可以使用 XML 文件 (Feature Repository] 并将其复制到 .../apache-karaf-4.1.5/deploy文件夹。然后它将由 Karaf 在 start-time 期间 picked-up 并且文件中描述的功能将自动安装,如果它们具有指定的属性:install="auto"
.
示例文件:
<features
name="AET Features"
xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
<repository>mvn:org.apache.cxf.karaf/apache-cxf/3.2.0/xml/features</repository>
<feature name="fooo" version="1.0.0" description="Features that should be installed" install="auto">
<feature>cxf-core</feature>
<feature>webconsole</feature>
<bundle>mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.features/4.1.2</bundle>
</feature>
</features>
这将安装名为 fooo 的新功能,其中包含 cxf-core 功能 - 仅用于此示例(此需要自己的存储库位置),Karaf 上可用的 webconsole 功能和在 Web 控制台中提供功能视图的附加包。
总结一下:
- 下载解压Karaf
- 创建一个具有某个名称的文件,即:
required-features.xml
具有功能描述 - 启动 Karaf 实例
您可以在 Karaf 源中找到特征文件的示例,例如:
https://github.com/apache/karaf/blob/master/assemblies/features/spring/src/main/feature/feature.xml
TL;DR - 将特征作为参数传递给 client
作为 docker exec -it 7447419c89da /opt/karaf/bin/client -r 7 "feature:install http; feature:install webconsole"
我认为
然而,当我构建 my own Dockerfile for iDempiere Micro on Karaf to automatically install Apache Karaf、安装其他功能(例如 WebConsole)并部署我的包时,我发现实现此目的的唯一方法是:
- 在 Dockerfile 中安装 Apache Karaf,还包括其他帮助程序 shell 脚本,请勿尝试安装功能
- 用 Karaf 启动 docker,让它启动并等待一段时间(在我的测试环境中,它最多需要 120 秒才能准备好)
- 运行
/opt/karaf/bin/client
如您的问题一样,并将所需的功能作为参数传递给docker exec -i idempiere-micro-karaf /opt/karaf/bin/client -r 7 "feature:install http; feature:install http-whiteboard; feature:install war; feature:install webconsole"
- 再等等,使用
docker exec -i idempiere-micro-karaf /opt/karaf/bin/client "system:shutdown -f -r"
重启Apache Karaf