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

标签 java docker tomcat cloudfoundry-uaa

我们使用 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:服务器启动失败。可能的配置错误。

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

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

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

最佳答案

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

docker pull cloudfoundry/uaa:75.0.0

查看其Dockerfile了解更多详情。

关于java - 如何将cloudfoundry-uaa部署为基于tomcat的docker镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57763689/

相关文章:

java.lang.OutOfMemoryError : Java heap space 错误

java - 内存文件系统中用于生产的 JIMFS

ubuntu - Docker :/var/run/docker. sock:没有这样的文件或目录

java - Tomcat服务器启动完成回调

apache - 插件 'org.apache.maven.plugins:maven-tomcat-plugin' 不存在或找不到有效版本

java - 不确定将逻辑循环放在哪里[java]

java - 如何管理自定义数据库连接池

mysql - 无法连接到 Docker 内的 MySQL 服务器

ruby-on-rails - Dockerise rails/redis/sidekiq/postgres 项目

java - 配置Tomcat使用属性文件加载DB连接信息