$ GOPATH / go .mod существует, но не должен при сборке контейнера docker, но работает, если я запускаю команды вручную - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю 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
...