Go语言 Docker:无法计算缓存键

ipakzgxi  于 2023-09-28  发布在  Go
关注(0)|答案(5)|浏览(109)

我正在尝试为我的sample-go应用构建一个docker镜像。我从sample-app文件夹本身运行它,并使用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"]

构建命令:

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

错误和日志:

#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

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

5vf7fwbs

5vf7fwbs1#

在我的情况下,我错过了.dockerignore文件中的文件夹条目。做一些类似的事情。

**/*
!docker-images
!configs
!main
jfgube3f

jfgube3f2#

这是一个基本的错误。

  • COPY ./configs /configs:将configs文件夹从host复制到Docker镜像
  • COPY main /main:将可执行文件mainhost复制到Docker镜像

这些问题是:

  • 基本Docker镜像没有这些文件夹/configs/main。你必须手动创建它们(Docker理解你的命令)。
  • 但我有一些建议:
  • 创建两个Docker镜像,用于两个目的:建造生产
  • 将源代码复制到用于构建应用程序的Docker构建器镜像中。
  • 将必要的输出文件从Docker构建器镜像复制到Docker生产镜像中。
siv3szwd

siv3szwd3#

两个文件夹/main/configs不存在。
COPY命令无法复制到此文件夹。

1.解决方案

在生成时创建文件夹

RUN mkdir -p /main

RUN mkdir -p /configs

使用COPY

2.解决方案

1.尝试在不使用COPYCMD的情况下进行构建
1.比run的新形象
1.使用bashsh插入运行容器
1.创建文件夹
1.退出exec容器
1.使用docker run commit创建正在运行的容器的新映像
1.停止容器并将其删除
1.使用新映像重新构建并包含COPYCMD

ecfdbz9o

ecfdbz9o4#

在我的情况下,问题是从我的机器连接的vpn/代理网络。它工作后,我断开了vpn/代理网络。

0yg35tkg

0yg35tkg5#

以这种方式写作。

# Use an official Python runtime as a parent image
FROM python:3.8-slim

# Set environment variables
ENV PYTHONUNBUFFERED 1
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
ENV FLASK_RUN_PORT 5002

# Create and set the working directory
WORKDIR /

# Copy the Flask app code into the container 
COPY requirements.txt requirements.txt   

# Install dependencies from the requirements.txt    
file RUN pip install -r requirements.txt   

COPY . .    

# Expose the port for Flask 

EXPOSE 5002   

# Start the Flask application CMD    
["flask", "run", "--host", "0.0.0.0", "--port", "5002"]

相关问题