1 回答
TA贡献1865条经验 获得超7个赞
你不需要将你的 Go 代码发布到像 github.com 这样的服务上来编译它。
您需要做的就是确保您要编译的代码在您正在编译它的机器上。您的go build
命令失败,因为错误消息中提到的包在机器上找不到。
以下假设 Go 项目本身是有序的,您可以在本地机器上编译它。如果不是这种情况,并且后面的答案不能帮助您解决问题,那么您需要在问题中包含更多信息,例如go.mod
文件、main.go
文件以及user
包的内容。
请注意,COPY *.go ./
它不会递归地复制所有 go 文件,即它不会复制目录中的./user/
文件。
COPY
:
每个都
<src>
可能包含通配符,并且将使用 Go 的filepath.Match
规则进行匹配。
模式语法是:
pattern:
{ term }
term:
'*' matches any sequence of non-Separator characters
'?' matches any single non-Separator character
'[' [ '^' ] { character-range } ']'
character class (must be non-empty)
c matches character c (c != '*', '?', '\\', '[')
'\\' c matches character c
character-range:
c matches character c (c != '\\', '-', ']')
'\\' c matches character c
lo '-' hi matches character c for lo <= c <= hi
请注意,该'*'术语匹配任何非分隔符字符序列,这意味着由于分隔符*.go而不会匹配。foo/bar.go/
在您的 中包含以下内容就足够了Dockerfile:
FROM golang:1.17-alpine
WORKDIR /app
COPY . ./
RUN go build -o /api
CMD [ "/api" ]
但是,如果您想对您复制的文件有选择性,那么您可以这样做:
COPY go.mod ./
COPY go.sum ./
COPY user/ ./user/
COPY *.go ./
- 1 回答
- 0 关注
- 66 浏览
添加回答
举报