如何将cloudfoundry-uaa部署为基于tomcat的docker映像?

时间:2019-09-03 00:15:01

标签: java docker tomcat cloudfoundry-uaa

我们正在使用cf-uaa的gradle任务来创建docker映像,但是这些已在最新版本中删除。我已经在最新版本中加载了战争,但是该服务似乎无法正确启动。

我一直在从v74标签构建战争,将其添加到tomcat:8.5.45-jdk12-openjdk-oracle或tomcat:9.0.24-jdk12-openjdk-oracle中,并设置了各种正在传递到上一张图片。在最初的tomcat输出之后,我看不到任何日志条目,表明我的战争已经部署,并且服务器启动了。

Dockerfile基本上只是对上一个映像中传递的内容的改编:

FROM tomcat:8.5.45-jdk12-openjdk-oracle
#FROM tomcat:9.0.24-jdk12-openjdk-oracle
ENV LOGIN_CONFIG_URL WEB-INF/classes/required_configuration.yml
ENV UAA_CONFIG_PATH /uaa
RUN bash -c "rm -r /usr/local/tomcat/webapps/ROOT"
RUN bash -c "rm -r /usr/local/tomcat/webapps/host-manager"
RUN bash -c "rm -r /usr/local/tomcat/webapps/manager"
RUN bash -c "rm -r /usr/local/tomcat/webapps/examples"
RUN bash -c "rm -r /usr/local/tomcat/webapps/docs"
ADD *.war /usr/local/tomcat/webapps/uaa.war
RUN bash -c "echo $LOGIN_CONFIG_URL"
EXPOSE 8080

我希望看到服务响应我的请求,或者日志中出现一些错误,表明战争未能部署。我目前没有从应用程序代码生成任何日志输出。当我向服务发送请求时,响应为500,其中包含来自服务的错误标头。

X-Cf-Uaa-Error:Server failed to start. Possible configuration error.

更新:我已经在.../tomcat/logs/uaa.log中找到了uaa日志,但没有看到任何指示服务部署失败的信息,但是也没有看到任何指示该服务正在使用环境变量的信息。已放入容器中。我使用war从原始设置重新创建了服务,该设置成功使用我作为卷安装的uaa.yml成功启动。比较日志时,原始设置的第一个日志条目是YamlProcessor,它根本不会显示在v75日志中。实际上,根本没有调试条目出现,这向我表明我的LOG_LEVEL env var也没有传播。

更新2:我们将图像库恢复为FROM tomcat:8.5-jre8,并开始在uaa.log中看到飞行路线错误。我们之前的数据源URL格式为url: jdbc:postgresql://${POSTGRES_NAME}:5432/${DB}?currentSchema=uaa,这导致了飞路异常。删除架构引用后,它在公共架构中创建了表。通过在启动服务之前手动创建uaa模式,它可以以原始格式运行。飞行路线版本已更新,因此也许需要设置一些新内容。

该应用程序似乎正在运行,但是当我尝试在/uaa/oauth/token处获取令牌时,在日志中出现500,并出现以下错误:Caused by: java.lang.NoSuchMethodError: java.nio.CharBuffer.limit(I)Ljava/nio/CharBuffer;

2 个答案:

答案 0 :(得分:1)

自 2021 年 1 月起,UAA 服务器 Docker 映像现已在 cloudfoundry/uaa dockerhub 存储库中提供。

docker pull cloudfoundry/uaa:75.0.0

有关详细信息,请参阅其 Dockerfile

答案 1 :(得分:0)

您可以尝试关注吗?

https://github.com/hortonworks/docker-cloudbreak-uaa

这很好用。