首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在karaf的docker容器中使用主机文件时发出的问题

在karaf的docker容器中使用主机文件时发出的问题
EN

Stack Overflow用户
提问于 2021-12-07 10:56:44
回答 1查看 155关注 0票数 0

我的问题是由jasypt完成的karaf users.properties文件的“自动加密”。我正在使用码头,以快速部署3个卡拉夫环境。

我正在使用karaf-maven-plugin构建一个简单的karaf原型,其中包含我需要的基本功能,然后我构建了一个码头映像并在Docker中运行它,将一些文件夹具体化,这些文件夹是特定于环境的。

以下是我的Dockerfile的摘录:

代码语言:javascript
复制
VOLUME ["/opt/karaf/deploy"]
VOLUME ["/opt/karaf/data"]
VOLUME ["/opt/karaf/etc/config-files"]

RUN rm /opt/karaf/etc/users.properties

RUN ln -s /opt/karaf/etc/config-files/users.properties /opt/karaf/etc/users.properties \
        && ln -s /opt/karaf/etc/config-files/log4j2.xml /opt/karaf/etc/log4j2.xml 

下面是我使用的run命令:

代码语言:javascript
复制
docker run -it --rm -p 8181:8181 \
        -v d:/amc_karaf/config-files:/opt/karaf/etc/config-files \
        -v d:/amc_karaf/deploy:/opt/karaf/deploy \
        -v d:/amc_karaf/data:/opt/karaf/data \
        --name karaf-container karaf:test

如您所见,实际的users.properties文件存储在我的主机上,而不是我的容器上,而且它可以工作(使用存储在主机上的密码进行身份验证)。

现在,下面是发生的情况:

  • 当我不对users.properties (符号链接+卷)进行外部化时,只要修改并保存密码,密码就会被正确加密。
  • 当我使用文件的外部化时,加密只在启动karaf时执行,而不是在保存文件时执行。

我怀疑这个问题可能与Felix有关,据我了解,Felix监视文件进行更改,以及使用docker卷进行外部化。然而,我未能找到解决这一具体问题的办法。

你对如何解决这个问题有什么想法或建议吗?

(部署文件夹也有相同的问题。当我在deploy文件夹中添加新的包时,我需要重新启动karaf,否则它们不会像我通常期望的那样自动启动。但是当我在文件夹上使用ls时,我确实看到了它们。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-20 13:55:08

已知(可能很难解决)与与码头容器共享文件夹有关的问题。

我不知道细节,但通常情况下,在容器中运行的应用程序很难跟踪文件更改或文件添加,如果说是在主机中进行了更改。

当修改运行在docker中的Karaf的配置文件时,我通常不得不使用docker exec -it karaf /bin/bash,并在karaf检测到新的配置之前使用一些touchcp命令。当我在安装特性时也是如此,这些特性可以将本地maven存储库中的信任添加到karaf运行中。

诡计:

  1. 对修改后的文件使用触摸命令(并不总是有效的)。
  2. 当触摸失败时,我通常不得不将配置文件复制到新文件,删除原始文件并将副本重命名为原始名称。

这些并不是码头和鼠疫播客独有的。

解决这些问题的一种方法是使用karaf shell添加用户。

代码语言:javascript
复制
jaas:realm-list
# Check the index of properties module (usually 1)
jaas:manage-realm --index <index>

jaas:user-add <username> <password>
jaas:group-add <username> <group>
jaas:update

# example create new user example-user and add it to admingroup
jaas:manage-realm --index 1
jaas:user-add example-user password
jaas:group-add example-user admingroup
jaas:update

其他的选择是使用其他一些测井模块,它允许您使用诸如active目录或数据库之类的方法来验证用户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70258907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档