Docker:无法计算缓存密钥

Uma*_*hra 8 go docker dockerfile

我正在尝试为我的示例应用程序构建一个 docker 映像。我从示例应用程序文件夹本身并使用 goland 编辑器的终端运行它。但构建失败并给了我一些错误。

我的 docker 文件如下所示:

FROM alpine:latest

RUN mkdir -p /src/build
WORKDIR /src/build

RUN apk add --no-cache tzdata ca-certificates

COPY ./configs /configs
COPY main /main

EXPOSE 8000

CMD ["/main"]
Run Code Online (Sandbox Code Playgroud)

构建命令:

docker build --no-cache --progress=plain  - < Dockerfile

Run Code Online (Sandbox Code Playgroud)

错误和日志:

#1 [internal] load build definition from Dockerfile
#1 sha256:8bb9ee83603259cf748d90ce42602f12527fa720d7417da22799b2ad4e503497
#1 transferring dockerfile: 222B done
#1 DONE 0.0s

#2 [internal] load .dockerignore
#2 sha256:f93d938488588cd0e0a94d9d343fe69dcfd28d0cb1da95ad7aab00aac50235c3
#2 transferring context: 2B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/alpine:latest
#3 sha256:13549c58a76bcb5dac9d52bc368a8fb6b5cf7659f94e3fa6294917b85546978d
#3 DONE 0.0s

#10 [1/6] FROM docker.io/library/alpine:latest
#10 sha256:d20daa00e252bfb345a1b4f53b6bb332aafe702d8de5e583a76fcd09ba7ea1c1
#10 CACHED

#7 [internal] load build context
#7 sha256:0f7a8a6082a837c139acc2855e1b745bba9f28cc96709d45cd0b7be42442c0e8
#7 transferring context: 2B done
#7 DONE 0.0s

#4 [2/6] RUN mkdir -p /src/build
#4 sha256:b9fa3007a44471d47414dd29b3ff07ead6af28ede820a2b4bae0ce84cf2c5a83
#4 CACHED

#5 [3/6] WORKDIR /src/build
#5 sha256:b2ec58a365fdd74c4f9030b0caff2e2225eea33617da306678ad037fce675388
#5 CACHED

#6 [4/6] RUN apk add --no-cache tzdata ca-certificates
#6 sha256:0966097abf956d5781bc2330d49cf715cd52c3807e8fedfff07dec50907ff03b
#6 CACHED

#9 [6/6] COPY main /main
#9 sha256:f4b81960427c014a020361bea0903728f289e1d796892fe0adc6409434f3ca76
#9 ERROR: "/main" not found: not found

#8 [5/6] COPY ./configs /configs
#8 sha256:630f272dd60dd307f40dbbdaef277ee0dfc24b71fa11e10a3b8efd64d3c05086
#8 ERROR: "/configs" not found: not found

#4 [2/6] RUN mkdir -p /src/build
#4 sha256:b9fa3007a44471d47414dd29b3ff07ead6af28ede820a2b4bae0ce84cf2c5a83
#4 DONE 0.2s
------
 > [5/6] COPY ./configs /configs:
------
------
 > [6/6] COPY main /main:
------
failed to compute cache key: "/main" not found: not found

Run Code Online (Sandbox Code Playgroud)

PS:我没找到问题出在哪里?请帮助

Dhe*_*Rao 5

就我而言,我错过了 .dockerignore 文件中的文件夹条目。做类似的事情。

**/*
!docker-images
!configs
!main
Run Code Online (Sandbox Code Playgroud)


Z0O*_*0OM 2

这两个文件夹/main并不/configs存在。

COPY命令无法复制到此文件夹中。

1. 解决方案

在构建时创建文件夹

RUN mkdir -p /main

RUN mkdir -p /configs
Run Code Online (Sandbox Code Playgroud)

并比使用COPY

2. 解决方案

  1. 尝试在没有COPYand的情况下构建CMD

  2. run新形象

  3. execbash使用或进入正在运行的容器sh

  4. 创建文件夹

  5. 退出exec容器

  6. 使用 docker run 创建正在运行的容器的新映像commit

  7. 停止容器并删除它

  8. 使用新图像再次构建并包含COPYCMD