gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:59:08 26 4
gpt4 key购买 nike

我正在使用 Dockerfile 中的 go-redis 构建一个 golang:1.14.2 docker 容器。

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 中的图像创建一个 docker 容器。然后运行与 Dockerfile 中完全相同的命令,然后 delivery做我期望的事情。
``

这是deliver.go:
package main

import (
"fmt"

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

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

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

我究竟做错了什么?我查看了此错误消息,但我看到的所有解决方案都没有对我有用。

编辑:这是撰写文件:
version: '3.4'
services:
...
delivery:
build: ./delivery
environment:
- REDIS_PORT=${REDIS_PORT}
- REDIS_PASS=${REDIS_PASS}
- QUEUE_NAME-${QUEUE_NAME}
volumes:
- ./logs:/logs

最佳答案

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

关于docker - $GOPATH/go.mod 存在,但在构建 docker 容器时不应该存在,但如果我手动运行命令就可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com