在向Docker部署Go应用程序时遇到问题
嗨,我是新来的,这是我第一次与docker工作,将应用程序打包到一个容器。 我正在一个应用程序位于dir下的linux虚拟机上工作:/ home / core / app / app-name在dir应用程序名称中有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中没有可build立的软件源文件命令'/ bin / sh -c go build -o main'。 返回一个非零的代码:1
我究竟做错了什么?
编辑:我得到了能够在我的Windows计算机上使用Dockfile生成图像:
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..
这可能适合你…
- 图像的GOPATH设置为/ go
- 在/ go / src下安装源代码
- 鉴于Gopath已经确定,而且来源在GOPATH之内
- 将工作目录设置为/ app
- 执行构build,输出应该出现在工作目录中
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
- 错误:HTTP请求响应时间
- 编译/安装libcontainer时由于自定义编译内核错误
- 使用golang docker引擎创build容器时出错
- Docker抱怨ALL_PROXY环境variables“proxy:unknown scheme:http”
- TLS自签名证书用于Docker的身份validationURL
- (启动容器时出错:API error(500)Hyperledger
- 使用Elastic Beanstalk在AWS上转到Web应用程序,不会在日志中显示输出
- ImageMagick Go API HTTP挂在ReadImageBlob上
- 用户:目前没有实施在Linux / amd64与golang使用docker从头开始