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

创建GitLab容器后Jenkins登录UI即崩溃问题求助

问题

通过docker-compose部署了remote_host、Jenkins、GitLab三个容器,所有容器均可正常启动,但登录Jenkins UI时,Jenkins容器随即崩溃;停止GitLab容器后该问题不再出现。

提供的配置与日志

docker-compose文件

version: '3'
services:
  remote_host:
    container_name: remote-host
    image: remote-host
    build:
      context: centos7
    networks:
      - net
  jenkins:
    container_name: jenkins
    image: jenkins-blueocean
    ports:
      - "8081:8080"
    build:
      context: .
    volumes:
      - "$PWD/jenkins_home:/var/jenkins_home"
    restart: on-failure
    networks:
      - net
  git:
    container_name: git-server
    image: 'gitlab/gitlab-ee:latest'
    hostname: 'gitlab.example.com'
    ports:
      - '8091:80'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    networks:
      - net

networks:
  net:

启动命令

export GITLAB_HOME=$HOME/gitlab
docker-compose up -d

Jenkins报错日志

at java.base/java.lang.Thread.run(Thread.java:829)
2023-03-26 14:23:36 Caused by: java.lang.AssertionError: class hudson.security.csrf.DefaultCrumbIssuer is missing its descriptor
2023-03-26 14:23:36     at jenkins.model.Jenkins.getDescriptorOrDie(Jenkins.java:1634)
2023-03-26 14:23:36     at hudson.security.csrf.CrumbIssuer.getDescriptor(CrumbIssuer.java:141)
2023-03-26 14:23:36     at hudson.Functions.getCrumbRequestField(Functions.java:1997)
2023-03-26 14:23:36     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2023-03-26 14:23:36     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2023-03-26 14:23:36     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2023-03-26 14:23:36     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2023-03-26 14:23:36     at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258)
2023-03-26 14:23:36     at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
2023-03-26 14:23:36     at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
2023-03-26 14:23:36     at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
2023-03-26 14:23:36     at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
2023-03-26 14:23:36     at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
2023-03-26 14:23:36     at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:76)
2023-03-26 14:23:36     at org.apache.commons.jelly.expression.ExpressionSupport.evaluateRecurse(ExpressionSupport.java:61)
2023-03-26 14:23:36     at org.apache.commons.jelly.expression.ExpressionSupport.evaluateAsString(ExpressionSupport.java:46)
2023-03-26 14:23:36     at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.buildAttributes(ReallyStaticTagLibrary.java:113)
2023-03-26 14:23:36     at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:97)
2023-03-26 14:23:36     at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
2023-03-26 14:23:36     at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:101)
2023-03-26 14:23:36     at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
2023-03-26 14:23:36     at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:101)
2023-03-26 14:23:36     at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
2023-03-26 14:23:36     at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:265)
2023-03-26 14:23:36     ... 58 more
2023-03-26 14:23:36 Caused: javax.servlet.ServletException
2023-03-26 14:23:36     at org.kohsuke.stapler.Facet$1.dispatch(Facet.java:249)
2023-03-26 14:23:36     at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:762)
2023-03-26 14:23:36     at org.kohsuke.stapler.Stapler.invoke(Stapler.java:894)
2023-03-26 14:23:36     at org.kohsuke.stapler.Stapler.invoke(Stapler.java:690)
2023-03-26 14:23:36     at hudson.init.impl.InstallUncaughtExceptionHandler.handleException(InstallUncaughtExceptionHandler.java:59)
2023-03-26 14:23:36     at hudson.init.impl.InstallUncaughtExceptionHandler.lambda$init$0(InstallUncaughtExceptionHandler.java:33)
2023-03-26 14:23:36     at org.kohsuke.stapler.compression.CompressionFilter.reportException(CompressionFilter.java:72)
2023-03-26 14:23:36     at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:56)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
2023-03-26 14:23:36     at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:86)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
2023-03-26 14:23:36     at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
2023-03-26 14:23:36     at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:38)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
2023-03-26 14:23:36     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
2023-03-26 14:23:36     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
2023-03-26 14:23:36     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:549)
2023-03-26 14:23:36     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
2023-03-26 14:23:36     at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
2023-03-26 14:23:36     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571)
2023-03-26 14:23:36     at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
2023-03-26 14:23:36     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1383)
2023-03-26 14:23:36     at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)

解决方案

1. 限制容器资源,避免资源抢占

GitLab属于资源密集型应用,会占用大量内存、CPU资源,当和Jenkins同时运行时,可能导致Jenkins因资源不足崩溃。

  • 先通过top或htop查看宿主机资源占用情况,确认GitLab启动后是否剩余足够资源给Jenkins。
  • 在docker-compose中为两个容器添加资源限制,防止资源耗尽:
git:
  # 保留原有配置
  deploy:
    resources:
      limits:
        cpus: '2.0'
        memory: 4G
jenkins:
  # 保留原有配置
  deploy:
    resources:
      limits:
        cpus: '1.0'
        memory: 2G

2. 修复Jenkins CSRF组件异常

日志核心报错class hudson.security.csrf.DefaultCrumbIssuer is missing its descriptor说明Jenkins的CSRF令牌组件异常,大概率是jenkins_home目录损坏或权限问题:

  • 停止Jenkins容器并备份现有数据:
docker-compose stop jenkins
cp -r $PWD/jenkins_home $PWD/jenkins_home_backup
  • 删除原数据目录,重新启动Jenkins初始化新配置:
rm -rf $PWD/jenkins_home
docker-compose up -d jenkins
  • 等Jenkins初始化完成后,再启动GitLab容器测试是否恢复正常。

3. 排查网络冲突

同一自定义网络下可能存在DNS或端口寻址异常,可尝试:

  • 修改Jenkins端口映射,比如将8081:8080改为8082:8080,避免潜在端口冲突。
  • 给每个容器分配固定IP,避免网络寻址问题:
services:
  remote_host:
    # 原有配置不变
    networks:
      net:
        ipv4_address: 172.20.0.2
  jenkins:
    # 原有配置不变
    networks:
      net:
        ipv4_address: 172.20.0.3
  git:
    # 原有配置不变
    networks:
      net:
        ipv4_address: 172.20.0.4
networks:
  net:
    ipam:
      config:
        - subnet: 172.20.0.0/24

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:08:11