Gitlab CI对构建器的访问权限访问被拒绝,存储库不存在或可能需要“ docker登录”

时间:2018-08-06 21:21:24

标签: docker .net-core continuous-integration gitlab

我有下一个构建脚本

echo 'Login'
sudo docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY

echo 'Build the project'
sudo docker build -t builder -f BuilderDockerfile .

echo 'Build the deployment containers'
sudo docker build -t $CI_REGISTRY_IMAGE/server:dev -f ApiDockerfile . & 
wait

echo 'Push the new images'
sudo docker push $CI_REGISTRY_IMAGE/server:dev &
wait

BuilderDockerfile在哪里

FROM microsoft/dotnet:2.1-sdk as dotnet_build

RUN echo 'BuilderDockerfile preparations'
WORKDIR /usr/src/app
COPY ./All_In .
RUN dotnet restore
RUN dotnet publish -c Release

FROM alpine:3.5
COPY --from=dotnet_build /usr/src/app /usr/src/dotnet_app

ApiDockerfile是

FROM microsoft/dotnet:2.1-aspnetcore-runtime

RUN echo 'ApiDockerfile preparations'
COPY --from=builder /usr/src/dotnet_app /usr/src/app

RUN echo 'ApiDockerfile run'
WORKDIR /usr/src/app/All_In.Server/bin/Release/netcoreapp2.1
CMD [ "dotnet", "./All_In.Server.dll" ]

我还配置了gitlab-runner并选择了shell执行程序。结果,在此构建期间,我有下一个输出

Running with gitlab-runner 11.1.0 (081978aa)
  on all-in-server 3ddb5910
Using Shell executor...
Running on all-in-server...
Fetching changes...
HEAD is now at bb44430 build.sh modified
Checking out bb444304 as master...
Skipping Git submodules setup
$ sh ./build.sh
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
Sending build context to Docker daemon   85.5kB

Step 1/7 : FROM microsoft/dotnet:2.1-sdk as dotnet_build
2.1-sdk: Pulling from microsoft/dotnet
55cbf04beb70: Pulling fs layer
1607093a898c: Pulling fs layer
9a8ea045c926: Pulling fs layer
d4eee24d4dac: Pulling fs layer
b1bce9049f44: Pulling fs layer
66482cff2298: Pulling fs layer
083dc249fbc8: Pulling fs layer
d4eee24d4dac: Waiting
b1bce9049f44: Waiting
66482cff2298: Waiting
083dc249fbc8: Waiting
9a8ea045c926: Verifying Checksum
9a8ea045c926: Download complete
55cbf04beb70: Verifying Checksum
55cbf04beb70: Download complete
b1bce9049f44: Verifying Checksum
b1bce9049f44: Download complete
1607093a898c: Verifying Checksum
1607093a898c: Download complete
55cbf04beb70: Pull complete
1607093a898c: Pull complete
9a8ea045c926: Pull complete
66482cff2298: Verifying Checksum
66482cff2298: Download complete
d4eee24d4dac: Verifying Checksum
d4eee24d4dac: Download complete
083dc249fbc8: Verifying Checksum
083dc249fbc8: Download complete
d4eee24d4dac: Pull complete
b1bce9049f44: Pull complete
66482cff2298: Pull complete
083dc249fbc8: Pull complete
Digest: sha256:2cb90bf0a775178967c58473ce5b5689de30221b9c4264b22f35d5e111e01d0a
Status: Downloaded newer image for microsoft/dotnet:2.1-sdk
 ---> 9e243db15f91
Step 2/7 : WORKDIR /usr/src/app
 ---> Running in d9ce0c6da73e
Removing intermediate container d9ce0c6da73e
 ---> a1d28ea60025
Step 3/7 : COPY ./All_In .
COPY failed: stat /var/lib/docker/tmp/docker-builder533733656/All_In: no such file or directory
Sending build context to Docker daemon   85.5kB

Step 1/4 : FROM microsoft/dotnet:2.1-aspnetcore-runtime
2.1-aspnetcore-runtime: Pulling from microsoft/dotnet
be8881be8156: Pulling fs layer
f854db899319: Pulling fs layer
4591fd524b8e: Pulling fs layer
65f224da8749: Pulling fs layer
65f224da8749: Waiting
4591fd524b8e: Verifying Checksum
4591fd524b8e: Download complete
f854db899319: Verifying Checksum
f854db899319: Download complete
be8881be8156: Verifying Checksum
be8881be8156: Download complete
65f224da8749: Verifying Checksum
65f224da8749: Download complete
be8881be8156: Pull complete
f854db899319: Pull complete
4591fd524b8e: Pull complete
65f224da8749: Pull complete
Digest: sha256:a43b729b84f918615d4cdce92a8bf59e3e4fb2773b8491a7cf4a0d728886eeba
Status: Downloaded newer image for microsoft/dotnet:2.1-aspnetcore-runtime
 ---> fcc3887985bb
Step 2/4 : COPY --from=builder /usr/src/dotnet_app /usr/src/app
invalid from flag value builder: pull access denied for builder, repository does not exist or may require 'docker login'
The push refers to repository [registry.gitlab.com/crispried/all-in-backend/server]
An image does not exist locally with the tag: registry.gitlab.com/crispried/all-in-backend/server
Job succeeded

所以,第一个错误是     复制失败:stat / var / lib / docker / tmp / docker-builder533733656 / All_In:没有此类文件或目录

但是,我不明白为什么会出现。是

的结果
sudo docker build -t builder -f BuilderDockerfile .

第二个是 标志值生成器中的无效:构建器的拉取访问被拒绝,存储库不存在或可能需要'docker login'     推送指向存储库[registry.gitlab.com/crispried/all-in-backend/server]     具有以下标记的本地图像不存在:registry.gitlab.com/crispried/all-in-backend/server

我相信这是第一个错误的结果,对吗? 任何想法如何解决呢?在另一个使用较旧的netcore映像的项目中,类似的配置对我很有用。我是否错过了一些配置?

1 个答案:

答案 0 :(得分:0)

问题在构建Step 3/7 : COPY ./All_In .的这一行中

我想念过在这个项目中,我的构建脚本位于我的项目根文件夹中。因此,实际上我只是在项目中没有 ./ All_In 文件夹。在我的情况下,解决方案只是修改BuilderDockerfile:

更改

COPY ./All_In .

COPY . .

结论是-从其他项目复制某些脚本时要小心。