尝试在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相关。我删除了duplicateCOPY
命令,但即使删除它也不起作用。我也使用了--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