You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建返回代码22:Liberty服务器启动失败排查求助

获取Liberty服务器启动日志的方法

  1. 修改Dockerfile,构建失败时自动打印日志
    将RUN configure.sh替换为以下内容,这样当configure.sh执行失败时,会先输出Liberty的核心日志再退出,你就能在Travis构建日志中看到具体错误:

    RUN configure.sh || ( \
        echo "=== Liberty控制台日志 ===" && \
        cat /logs/defaultServer/console.log && \
        echo "=== Liberty消息日志 ===" && \
        cat /logs/defaultServer/messages.log && \
        exit 1 \
    )
    
  2. 查看Travis构建的临时容器日志
    构建失败的错误信息里会给出临时容器ID(比如示例中的d67ac92aad57),在Travis构建环境中执行以下命令,即可获取容器内的完整日志:

    docker logs d67ac92aad57
    

服务器启动失败的可能排查方向

  • Dockerfile冗余问题:开头的FROM ubuntu:22.04完全多余——多阶段构建中只有最后一个FROM的镜像会作为最终基础,这一行会被直接忽略,建议删除以避免混淆。
  • Server.xml配置错误:检查server.xml是否存在无效配置,比如引用了不存在的Liberty特性、端口冲突、依赖外部服务但Travis环境无法访问等。本地正常可能是因为本地环境有对应依赖,而Travis环境没有。
  • 应用包完整性问题:确认Travis构建生成的app.war是否与本地一致、没有损坏。可以在构建镜像前添加步骤校验war包内容:
    jar tf /deploy/defaultServer/apps/app.war
    
  • 权限冲突问题:当前以root用户执行configure.sh,但Liberty默认使用1001用户启动服务器,可能导致权限不足。可以尝试在RUN configure.sh前切换回1001用户:
    USER 1001
    RUN configure.sh
    
  • Liberty特性缺失:如果server.xml声明的特性在open-liberty:full-java11-openj9镜像中未包含,会导致启动失败,这类信息会明确出现在messages.log中。

内容的提问来源于stack exchange,提问作者Vaishnavi Killekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:07:46