Я создаю golang: 1.14.2 docker контейнер с go -redis из Dockerfile.
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
.
Однако я могу создать контейнер docker, используя изображение из файла dockerfile docker container run -it --rm golang:1.14.2
, а затем выполнить те же команды, что и в Dockerfile, и delivery
сделает то, что я ожидаю. ``
Вот поставка. go:
package main
import (
"fmt"
"github.com/go-redis/redis/v7"
)
func main() {
// redis client created here...
fmt.Println("inside main...")
}
Что я делаю не так? Я посмотрел это сообщение об ошибке, и ни одно из найденных решений не помогло мне.
РЕДАКТИРОВАТЬ: Вот файл compose:
version: '3.4'
services:
...
delivery:
build: ./delivery
environment:
- REDIS_PORT=${REDIS_PORT}
- REDIS_PASS=${REDIS_PASS}
- QUEUE_NAME-${QUEUE_NAME}
volumes:
- ./logs:/logs