我们正在使用cf-uaa的gradle任务来创建docker镜像,但这些已在最新版本中删除。我已经在最新版本中加载了 war ,但是该服务似乎无法正确启动。
我一直在通过v74标签建立 war ,将其添加到tomcat:8.5.45-jdk12-openjdk-oracle或tomcat:9.0.24-jdk12-openjdk-oracle中,并设置了我们传入的各种环境变量到上一张图片。在最初的tomcat输出之后,我看不到任何日志条目,它们表明我的 war 已经部署并且服务器启动了。
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
我希望看到该服务响应我的请求,或者日志中出现一些错误,表明 war 部署失败。我目前没有从应用程序代码生成任何日志输出。当我向服务发送请求时,响应为500,其中包含来自服务的错误 header 。
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
,这导致了飞路异常。删除架构引用后,它在公共(public)架构中创建了表。通过在启动服务之前手动创建uaa模式,它可以以原始格式运行。飞行路线版本已更新,因此可能需要设置一些新内容。该应用程序似乎正在运行,但是当我尝试在
/uaa/oauth/token
上获取 token 时,我在日志中得到500并带有以下错误:Caused by: java.lang.NoSuchMethodError: java.nio.CharBuffer.limit(I)Ljava/nio/CharBuffer;
最佳答案
你可以试试看吗?
https://github.com/hortonworks/docker-cloudbreak-uaa
这很好。