尝试在docker中运行Go Echo应用程序时出现模块路径问题

尝试在docker中运行Go Echo应用程序时出现模块路径问题,docker,go,Docker,Go,我有个奇怪的问题要处理。当我使用docker run命令时,它工作正常,这不是依赖性问题,它正确地执行文件,但在运行docker compose up时,它会给出错误: Creating echo_app ... done Attaching to echo_app echo_app | server.go:6:2: cannot find package "github.com/labstack/echo/v4" in any of: echo_app | /usr/lo

我有个奇怪的问题要处理。当我使用
docker run
命令时,它工作正常,这不是依赖性问题,它正确地执行文件,但在运行
docker compose up
时,它会给出错误:

Creating echo_app ... done
Attaching to echo_app
echo_app | server.go:6:2: cannot find package "github.com/labstack/echo/v4" in any of:
echo_app |  /usr/local/go/src/github.com/labstack/echo/v4 (from $GOROOT)
echo_app |  /go/src/github.com/labstack/echo/v4 (from $GOPATH)
echo_app exited with code 1
以下是我的档案:

Dockerfile

FROM golang:1.15-alpine
LABEL maintainer="Me"

RUN apk update
RUN apk add git

# Setting up Dev environment
RUN mkdir /echo_app
COPY . /echo_app/
WORKDIR /echo_app/

# Download Echo Framework with help of Go mod (Credit: https://github.com/labstack/echo/issues/1374#issuecomment-559990790)
# Init to create Go Module
RUN go mod init app.com/main
# Building to download echo framework and other dependencies
RUN go build

# RUN the server
#CMD go run server.go 
EXPOSE 1323
docker compose.yml

version: "3"
services: 
  web:
    container_name: echo_app
    image: echo_app:latest
    build: ./
    command: go run server.go
    volumes:
      - .:/echo_app
    ports: 
      - "1323:1323"

我不能纠正你的错误。你确定你在没有缓存的情况下运行了
docker compose up
?尝试重建它
docker compose down&&docker compose rm
,然后
docker compose up--build
。@这就是我如何构建
docker build-t echo\u app:latest-f Dockerfile.
然后运行
docker compose up
。不,我没有使用缓存参数。运行命令时出现错误:警告:未找到网络回声\u docker\u默认值。错误:没有这样的服务:为什么用docker运行
build
,而用
docker compose运行
?即使我尝试了你的命令,它也会导致网络错误。我现在遇到的问题是。当我使用
docker run
命令时,它执行file OK。但唯一的问题是,在使用docker compose时,它并没有找到fie。如果我在主机终端中运行go命令,然后使用
docker-compose-up
它就可以正常工作了。但我不想假设主机中存在Go,因此希望Docker中的所有内容都与Go相关。我删除了duplicate
COPY
命令,但即使删除它也不起作用。我也使用了
--cache
。您可能需要删除图像,并使用注释掉的最后一个
COPY…
运行它来调试它,因为您很可能正在复制构建工件。您可以显式指定生成(上下文和dockerfile)。信任我已多次删除映像。我在Mac上的Docker上。这对你有用吗?我已经删除了复制命令和现有的图像和容器你是否“去下载?”
FROM golang:1.15-alpine
LABEL maintainer="Me"


# Setting up Dev environment

WORKDIR /echo_app/
# note this file, go.mod exists locally. and contain reference 
# to direct/indirect dependencies. this step allows to download 
# dependencies and speedup build for docker images (if it used 
# to build artifacts, and not as dev env).  
COPY go.mod  /echo_app/go.mod
RUN go mod download


EXPOSE 1323