如何使用部署脚本在 Karaf 控制台中 运行 docker 内的 Servicemix 命令?

How to run Servicemix commands inside docker in Karaf console using deploy script?

各位同事,正好我现在在一个老项目中使用了servicemix 7.0技术。我手动 运行 有几个命令。

build image servicemix docker build --no-cache -t servicemix-http:latest .

start container and copy data from local folder source and folder .m docker run --rm -it -v %cd%:/source -v %USERPROFILE%/.m2:/root/.m2 servicemix-http

start console servicemix and run command feature:repo-add file:/../source/source/transport/feature/target/http-feature.xml

run command feature:install http-feature

copy deploy files from local folder to deploy folder into servicemix docker cp /configs/. :/deploy

update image servicemix docker commit servicemix-http

现在我描述用于部署的gitlab-ci.yml。 问题涉及从 karaf 控制台启动的 servicemix 命令。 feature:repo-添加 feature:install 有什么方法可以编写它们吗?

如果您只需要在启动时从特定功能存储库安装功能,您可以将功能和 feature-repositories 添加到 /etc/org.apache.karaf.features.cfg

您可以使用 ssh 和 private-key 将命令传递给 Apache karaf。

ssh karaf@localhost -p 8101 -i ~/.ssh/karaf_private_key -- bundle:list

您也可以通过 Karaf_home/bin/client 尝试 运行 命令,尽管我在尝试使用 Windows 10 ServiceMix 7.0.1 时没有成功。它一直向我抛出 NullReferenceException,所以猜测我的 java 安装缺少一些与安全相关的配置。

虽然 运行 在 docker 上安装较新的 Karaf 时效果很好,但也可以通过 docker exec 使用。

# Using password - (doesn't seem to be an option for servicemix)
docker exec -it  karaf /opt/apache-karaf/bin/client -u karaf -p karaf -- bundle:list

# Using private-key
docker exec -it  karaf /opt/apache-karaf/bin/client -u karaf -k /keys/karaf_key -- bundle:list