首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$GOPATH/go.mod存在,但在构建docker容器时不应该存在,但如果我手动运行命令,则可以工作。

$GOPATH/go.mod存在,但在构建docker容器时不应该存在,但如果我手动运行命令,则可以工作。
EN

Stack Overflow用户
提问于 2020-04-30 18:33:49
回答 1查看 10.9K关注 0票数 6

我正在建造一个golang:1.14.2码头集装箱,里面有一个Dockerfile的红包。

代码语言:javascript
复制
FROM golang:1.14.2

# project setup and install go-redis
RUN mkdir -p /go/delivery && cd /go/delivery && \
    go mod init example.com/delivery && \
    go get github.com/go-redis/redis/v7 

# important to copy to /go/delivery
COPY ./src /go/delivery

RUN ls -la /go/delivery

RUN go install example.com/delivery
ENTRYPOINT ["delivery"]

但是,当我试图使用docker-compose up --build -d构建容器时,我会得到以下错误:$GOPATH/go.mod exists but should not ERROR: Service 'delivery' failed to build: The command '/bin/sh -c go get github.com/go-redis/redis/v7' returned a non-zero code: 1

但是,我可以使用Dockerfile docker container run -it --rm golang:1.14.2中的图像创建一个停靠器容器,然后运行与dockerfile中完全相同的命令,而delivery则按照我的预期执行。

以下是deliver.go:

代码语言:javascript
复制
package main

import (
    "fmt"

    "github.com/go-redis/redis/v7"
)

func main() {
    // redis client created here... 

    fmt.Println("inside main...")
}

我做错了什么?我查找了这条错误消息,我所看到的解决方案都没有对我有用。

编辑:这是撰写文件:

代码语言:javascript
复制
version: '3.4'
services:
  ...
  delivery:
    build: ./delivery
    environment:
      - REDIS_PORT=${REDIS_PORT}
      - REDIS_PASS=${REDIS_PASS}
      - QUEUE_NAME-${QUEUE_NAME}
    volumes: 
      - ./logs:/logs
EN

回答 1

Stack Overflow用户

发布于 2021-05-07 23:27:21

我也有同样的问题。您需要设置WORKDIR /go/交付

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61530403

复制
相关文章

相似问题

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