Docker中的Grails应用程序,安装弹簧安全插件



关于在Docker中运行的Grails应用和Spring-Security-LDAP 2.0.1插件的新手问题。

目前,我正在运行本地Grails应用程序(不在Docker中(,Spring-Security-LDAP 2.0.1的安装非常简单,主要是在BuildConfig.groovy中添加的线路: 插件{ 编译":春季安全性:2.0.1" }

实现了必要的用户详细信息和映射类后,首次运行Grails应用程序,将自动执行Spring-Security-LDAP的安装,并在下面安装一堆东西//src/target/work/plugins/spring-security-ldap-2.0.1/文件夹,这些是驱动LDAP登录支持的东西。

现在,如果我要将Grails应用程序移至Docker容器中,那么完成此插件安装的正确方法是什么?在哪里指定插件的分辨率和安装?

[UPDATE 20180425]

nvm,我只是使用更改的代码(在buildConfig.groovy中指定LDAP插件(尝试了一下,重建了Docker映像并执行了它,现在可以看到Auth Login Login Page。这意味着该插件已经从外部回购中成功解决并内置在Docker Image!

中!

现在的问题是,我无法与测试用户登录: org.springframework.security.authentication.internalauthenticationserviceException:localhost:389;嵌套例外是Javax.Naming.CommunicationException:localhost:389 [根异常是Java.net.connectException:连接拒绝(连接拒绝(]

必须为我的本地OpenLDAP打开Docker In/Out端口。我将在Docker文档上阅读一些内容。

首先,使用grails war创建war文件。它将自动添加战争文件中的所有依赖项,包括spring-security-ldap。您不必担心依赖注入的任何事情。

之后,您可以按照以下步骤创建和运行Docker映像:

a(创建Dockerfile

在您的项目目录中创建一个名为 Dockerfile的文件,其中包含以下内容:

FROM tomcat:7.0.86-jre7
WORKDIR /usr/local/tomcat/bin
COPY <path/to/your-war-file> /usr/local/tomcat/webapp/<application-name>.war
CMD ["catalina.sh", "run"]

b(创建图像

只需执行docker build -t <image name>:<image version> .,这将在您的本地Docker引擎中创建一个Docker映像。

c(运行容器

最后,通过执行docker run -p <port you wanna bind>:8080 <image name>:<image version>

启动您的应用程序

如果一切顺利,您现在可以在docker run ..命令中绑定的端口上访问您的应用程序。

更新

要回答您的更新的问题,当您在容器中访问localhost时,它无法解散到Docker主机机器的本地主机。它解决了容器本身。因此,如果您在主机机上运行某些内容(在这种情况下,端口389上的OpenLDAP(,则必须使用主机计算机的IP访问此内容。

在这种情况下,一个更好的解决方案也是在Docker容器中运行OpenLDAP。这样,您可以使用其主机名访问OpenLDAP,如果它更改,则不必更改IP。

最新更新