跟随《Securing DevOps》实操:CircleCI集成与Docker构建报错求助
《Securing DevOps》第二章实操问题排查
一、CircleCI无运行反馈问题
- 未提前关联CircleCI账号:GitHub仓库需要先在CircleCI平台完成账号关联与流水线配置,否则webhook无法触发流水线运行。你后续创建账号并配置流水线的操作是正确的,若要触发之前的提交构建,可在CircleCI控制台手动选择对应分支执行构建。
- 空提交无触发:你执行
git add .circleci/config.yml和commit时提示工作目录干净,说明该配置文件未做任何修改,空提交不会触发CircleCI流水线。需确保配置文件存在有效变更,或首次启用时确认CircleCI已识别到该配置文件。
二、Docker构建错误问题
1. Docker daemon未运行错误
这是环境基础问题,Mac系统需确保Docker Desktop已启动,Linux系统需确认Docker服务处于运行状态,可通过执行docker ps命令验证Docker daemon是否正常响应。
2. 找不到/bin/invoicer错误
你的Dockerfile存在两处逻辑问题:
COPY bin/invoicer /app/invoicer指令无效:你未在本地编译Go程序,所以本地不存在bin/invoicer文件,COPY步骤必然失败。go build指令缺少源码基础:Dockerfile中未将Go源码复制到容器内,直接执行go build github.com/Securing-DevOps/invoicer-chapter2会因找不到源码包失败。
无需本地安装Go,可通过修改Dockerfile在容器内完成编译:
FROM golang:latest RUN addgroup --gid 10001 app RUN adduser --gid 10001 --uid 10001 \ --home /app --shell /sbin/nologin \ --disabled-password app # 切换到容器内的GOPATH源码目录,复制本地源码 WORKDIR /go/src/github.com/Securing-DevOps/invoicer-chapter2 COPY . . # 编译生成静态链接的二进制文件 RUN go build --ldflags '-extldflags "-static"' -o invoicer # 准备应用运行环境 RUN mkdir /app/statics/ COPY statics /app/statics/ COPY invoicer /app/invoicer USER app EXPOSE 8080 WORKDIR /app ENTRYPOINT /app/invoicer
修改后,所有编译步骤在容器内完成,不会再出现文件找不到的问题。
内容的提问来源于stack exchange,提问作者user3523406
相关产品推荐
相关产品推荐

