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

基于Docker镜像构建Angular13流水线时遇Exit Code 1错误求助

问题分析与解决

核心问题

你遇到的docker exec执行失败,本质是目标容器并未处于运行状态,导致无法进入容器执行命令。结合你的Dockerfile,可能的原因及对应解决方法如下:

可能原因及修复方案

1. Nginx配置文件错误,容器启动后立刻退出

你的Dockerfile替换了默认的Nginx配置文件/etc/nginx/conf.d/default.conf,如果该配置文件存在语法错误、路径指向错误等问题,Nginx会启动失败,容器随之直接停止。

  • 验证方式:本地手动构建镜像并启动容器,查看日志定位问题:
    docker build -t my-angular-app .
    docker run -d --name test-container my-angular-app
    docker logs test-container
    
    根据日志中的Nginx报错提示,修正nginx.conf的语法或路径配置。

2. 流水线中docker exec的时机错误

流水线可能在容器未启动完成,甚至未启动的情况下就执行了docker exec命令。

  • 修复方法:
    • 确保在docker exec前,容器已通过docker run启动,并且添加健康检查等待容器就绪:
      docker run -d --name my-app-container my-angular-app
      # 等待容器进入健康状态(需先在Dockerfile中配置健康检查)
      docker wait --condition healthy my-app-container
      # 再执行exec命令
      docker exec my-app-container sh -c "command -v bash"
      
    • 若流水线仅需验证shell环境,注意nginx:alpine默认只有sh没有bash,可直接调整命令为command -v sh。

3. nginx:alpine镜像默认无bash

nginx:alpine基于Alpine Linux,默认仅预装sh,没有bash,你执行的command -v bash本来就会返回找不到,这也是流水线逻辑的问题之一。

  • 修复方法:如果业务确实需要bash,在Dockerfile中添加安装命令:
    FROM nginx:alpine
    
    # 安装bash
    RUN apk add --no-cache bash
    
    ADD ./dist/xxxxxx /usr/share/nginx/html
    COPY ./nginx.conf /etc/nginx/conf.d/default.conf
    
    ENV TZ=America/Santiago
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    

额外建议

  • 流水线中尽量避免使用docker exec,如果需要执行命令,优先在Dockerfile的RUN指令中完成,无需等到容器启动后再操作。
  • 给容器添加健康检查,确保流水线在容器完全就绪后再执行后续步骤:
    HEALTHCHECK --interval=5s --timeout=3s \
      CMD curl -f http://localhost/ || exit 1
    

内容的提问来源于stack exchange,提问作者Francisco Ojeda CL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:42:53