我在 Gitlab 上使用 CI 管道构建 docker 映像以部署到 Raspbian。由于我的构建需要访问一些私有 NPM 包,我在 Docker 文件中包含以下行,该行使用存储在环境变量 $NPM_TOKEN 中的值创建令牌文件:
RUN echo //registry.npmjs.org/:_authToken=$NPM_TOKEN > ~/.npmrc
resin/raspberrypi3-node
从我通常的图像( )构建时,这很好用。但是,我的一个容器是从armhf/ubuntu
. 执行上述行时,构建失败并出现以下错误:
standard_init_linux.go:207: exec user process caused "no such file or directory"
The command '/bin/sh -c echo //registry.npmjs.org/:_authToken=$NPM_TOKEN >> ~/.npmrc' returned a non-zero code: 1
该构建docker build
在我的开发机器(Windows 10)上运行良好,但不在 gitlab 管道中。
我尝试将我的 docker 和管道文件剥离到最低限度,并从路径中删除了环境变量和波浪号,但这对于 ubuntu(但不是树脂)图像仍然失败。
Dockerfile.test.ubuntu:
FROM armhf/ubuntu
RUN echo hello > world.txt
Dockerfile.test.resin:
FROM resin/raspberrypi3-node
RUN echo hello > world.txt
gitlab-ci.yml:
build_image:
image: docker:git
services:
- docker:dind
script:
- docker build -f Dockerfile.test.resin . # Succeeds
- docker build -f Dockerfile.test.ubuntu . # Fails
only:
- master
.sh
我已经搜索了类似的问题,并且在运行包含CRLF
组合的文件时看到了此错误报告。虽然我在 Windows 上开发,但我的 IDE(VS 代码)设置为使用LF
,而不是CRLF
,我已经检查了上述所有文件的合规性。