猿问

将 Go 应用程序部署到 docker 时遇到问题

,这是我第一次使用 docker 将应用程序打包到容器中。我正在开发应用程序位于目录下的 linux VM:/home/core/app/app-name 在 dir app-name 中有 main.go 程序和 Dockerfile。Dockerfile 包含以下内容:


FROM golang:latest

RUN mkdir /app

ADD . /home/core/app/app-name

WORKDIR /app/app-name

RUN go build -o main .

CMD ["/app/main"]

EXPOSE 8080

我尝试从 dir /home/core/app/app-name 运行:


docker build -t app-image .

但我得到了这个错误:


无法加载包:包。:/app/stars-app 中没有可构建的 Go 源文件命令“/bin/sh -c go build -o main.” 返回一个非零代码:1


我究竟做错了什么?


编辑: 我能够使用 Dockfile 在我的 Windows 机器上构建图像:


FROM golang:latest

Add . /app/app-name

EXPOSE 8080

CMD ["/app/app-name/main"]

通过运行:


docker build -t star-image .

当我运行“docker images”时,我可以看到图像,但是当我尝试使用以下命令运行它时:


docker run -p 3000:8080 --name goapp --rm app-name

我收到此错误:


docker: Error response from daemon: Container command '/app/app-name/main' not found or does not exist..


慕尼黑5688855
浏览 202回答 2
2回答

哔哔one

我也有这个问题,但不知何故基于这个指南,这对我有用。# ...AS builder ...FROM golang:1.14WORKDIR /go/src/app# In your case, ./main.go or just .COPY ./server.go .COPY --from=builder ./app/build .RUN go get -d -v ./...RUN go install -v ./...CMD ["app"]

婷婷同学_

这可能对你有用...图像的 GOPATH 设置为 /go在 /go/src 下安装你的源代码假设 gopath 已设置并且源在 GOPATH 内将工作目录设置为 /app执行构建,输出应该存在于工作目录中DockerfileFROM golang:latestADD ./app /go/src/appRUN mkdir /appWORKDIR /appRUN go build -o main app/app-nameCMD ["/app/main"]EXPOSE 8080应用程序/应用程序名称/main.gopackage mainimport "fmt"func main() {    fmt.Printf("hello, world\n")}docker build -t app-image .docker run app-image输出hello, world
随时随地看视频慕课网APP

相关分类

Go
我要回答