我的问题是由jasypt完成的karaf users.properties文件的“自动加密”。我正在使用码头,以快速部署3个卡拉夫环境。
我正在使用karaf-maven-plugin构建一个简单的karaf原型,其中包含我需要的基本功能,然后我构建了一个码头映像并在Docker中运行它,将一些文件夹具体化,这些文件夹是特定于环境的。
以下是我的Dockerfile的摘录:
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命令:
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文件存储在我的主机上,而不是我的容器上,而且它可以工作(使用存储在主机上的密码进行身份验证)。
现在,下面是发生的情况:
我怀疑这个问题可能与Felix有关,据我了解,Felix监视文件进行更改,以及使用docker卷进行外部化。然而,我未能找到解决这一具体问题的办法。
你对如何解决这个问题有什么想法或建议吗?
(部署文件夹也有相同的问题。当我在deploy文件夹中添加新的包时,我需要重新启动karaf,否则它们不会像我通常期望的那样自动启动。但是当我在文件夹上使用ls时,我确实看到了它们。)
发布于 2021-12-20 13:55:08
已知(可能很难解决)与与码头容器共享文件夹有关的问题。
我不知道细节,但通常情况下,在容器中运行的应用程序很难跟踪文件更改或文件添加,如果说是在主机中进行了更改。
当修改运行在docker中的Karaf的配置文件时,我通常不得不使用docker exec -it karaf /bin/bash,并在karaf检测到新的配置之前使用一些touch或cp命令。当我在安装特性时也是如此,这些特性可以将本地maven存储库中的信任添加到karaf运行中。
诡计:
这些并不是码头和鼠疫播客独有的。
解决这些问题的一种方法是使用karaf shell添加用户。
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目录或数据库之类的方法来验证用户。
https://stackoverflow.com/questions/70258907
复制相似问题