将go app部署到docker时遇到问题

时间:2016-06-17 13:36:53

标签: go docker

您好我很新,这是我第一次使用docker将应用程序打包到容器中。我正在开发一个linux VM,其中app位于dir:/ 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 .

但我收到了这个错误:

无法加载package:package。:在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..

2 个答案:

答案 0 :(得分:0)

这可能对你有用......

  • 图像的GOPATH设置为/ go
  • 在/ go / src
  • 下安装您的源代码
  • 鉴于gopath已设定且来源属于GOPATH
  • 将工作目录设置为/ app
  • 执行构建,输出应该出现在工作中 目录

<强> Dockerfile

FROM golang:latest
ADD ./app /go/src/app
RUN mkdir /app
WORKDIR /app
RUN go build -o main app/app-name
CMD ["/app/main"]
EXPOSE 8080

应用/应用名/ main.go

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}
docker build -t app-image .
docker run app-image

输出

hello, world

答案 1 :(得分:0)

我对此也有疑问,但基于此guide,这对我很有用。

# ...AS builder ...

FROM golang:1.14
WORKDIR /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"]