首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由父目录生成的Docker提供错误包-包不在GOROOT中。

由父目录生成的Docker提供错误包-包不在GOROOT中。
EN

Stack Overflow用户
提问于 2020-12-01 17:32:53
回答 1查看 3.5K关注 0票数 0

我正试图为它的这个示例项目结构创建一个坞映像,如下所示

  • 两个模块-公共模块和围棋模块

以下是我的码头文件

代码语言:javascript
复制
FROM golang as builder

ENV GO111MODULE=on

WORKDIR /go-modules-docker

COPY . .

COPY ./go-modules/go.mod .
COPY ./go-modules/go.sum .

RUN go mod download

RUN CGO_ENABLED=0 GOOS=linux go build -o app ./go-modules/main.go 

FROM alpine:3.8

WORKDIR /root/

COPY --from=builder /go-modules/app .

CMD ["./app"]

go.mod文件如下所示

代码语言:javascript
复制
module go-modules

go 1.15

replace common => /go-modules-docker/common

require (
    common v0.0.0-00010101000000-000000000000
    github.com/julienschmidt/httprouter v1.3.0
)

Main.go如下所示

代码语言:javascript
复制
package main

import (
    "fmt"
    "log"
    "net/http"

    "go-modules/greet" // go-modules is our project namespace

    "common/deps"

    "github.com/julienschmidt/httprouter"
)

func main() {
    r := httprouter.New()
    r.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
        fmt.Fprintf(w, "hello world, v%v %v", greet.Version, deps.Version2)
    })
    log.Println("listening to port *:8080. press ctrl + c to cancel.")
    log.Fatal(http.ListenAndServe(":8080", r))
}

当从父目录运行此命令时-go-modules docker

docker build -t go-mod-docker -f go-modules/Dockerfile .

我收到以下错误

代码语言:javascript
复制
[+] Building 2.2s (13/15)                                                                                                                                             
 => [internal] load .dockerignore                                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                                  0.0s
 => [internal] load build definition from Dockerfile                                                                                                             0.0s
 => => transferring dockerfile: 37B                                                                                                                              0.0s
 => [internal] load metadata for docker.io/library/alpine:3.8                                                                                                    0.8s
 => [internal] load metadata for docker.io/library/golang:latest                                                                                                 0.8s
 => [internal] load build context                                                                                                                                0.0s
 => => transferring context: 618B                                                                                                                                0.0s
 => [builder 1/7] FROM docker.io/library/golang@sha256:cf46c759511d0376c706a923f2800762948d4ea1a9290360720d5124a730ed63                                          0.0s
 => [stage-1 1/3] FROM docker.io/library/alpine:3.8@sha256:2bb501e6173d9d006e56de5bce2720eb06396803300fe1687b58a7ff32bf4c14                                      0.0s
 => CACHED [builder 2/7] WORKDIR /go-modules-docker                                                                                                              0.0s
 => [builder 3/7] COPY . .                                                                                                                                       0.0s
 => [builder 4/7] COPY ./go-modules/go.mod .                                                                                                                     0.0s
 => [builder 5/7] COPY ./go-modules/go.sum .                                                                                                                     0.0s
 => [builder 6/7] RUN go mod download                                                                                                                            0.8s
 => ERROR [builder 7/7] RUN CGO_ENABLED=0 GOOS=linux go build -o app ./go-modules/main.go                                                                        0.5s
------                                                                                                                                                                
 > [builder 7/7] RUN CGO_ENABLED=0 GOOS=linux go build -o app ./go-modules/main.go:
#14 0.434 go-modules/main.go:8:2: package go-modules/greet is not in GOROOT (/usr/local/go/src/go-modules/greet)
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c CGO_ENABLED=0 GOOS=linux go build -o app ./go-modules/main.go]: runc did not terminate sucessfully

有人能建议我们可以做些什么以及如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 14:42:54

通过再次更新WORKDIR ( Dockerfile )到go-modules (基本上是做一个CD更改目录)并构建整个模块,解决了问题。

将docker文件更改为此解决了问题。

代码语言:javascript
复制
FROM golang as builder

ENV GO111MODULE=on

WORKDIR /go-modules-docker

COPY . .

WORKDIR /go-modules-docker/go-modules

RUN go mod download

RUN CGO_ENABLED=0 GOOS=linux go build -o /go-modules-docker/app

FROM alpine:3.8

WORKDIR /root/

COPY --from=builder /go-modules-docker/app .

CMD ["./app"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65095510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档