在Docker中部署Go应用程序时出现问题
您好我很新,这是我第一次使用docker将应用程序打包到容器中。我正在开发一个应用程序位于dir下的linux虚拟机:/ home/core/app/app-name在dir应用程序名称中有main.go程序和Dockerfile。该Dockerfile包含此:在Docker中部署Go应用程序时出现问题
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
我试图从目录的/ home /核心/应用程序/应用程序名称运行:
docker build -t app-image .
但我得到这个错误:
无法加载package:package。:在/ app/stars-app中没有可构建的Go源文件 命令'/ 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 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 /去
- 安装在你的源极(S)/去/ SRC
- 给出的GOPATH被设置并且来源是GOPATH
- 工作目录设置为/应用
- 执行内建立和输出应该在工作 目录
存在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
当我运行它,我得到了: 发送建立上下文码头工人守护100.9 KB 1步:从golang:最新 ---> 5850add7ecc2 2步:添加./app /去/ src目录/应用 LSTAT应用:无这样的文件或目录 –
@ChristopherStephenson在Dockerfile所在的目录中本地位置我有一个名为“app”的文件夹,其中包含名为“app-name”的子文件夹,其中包含一个文件“main.go”..试图模仿你的应用程序结构基于所提供的信息。 [gist](https://gist.github.com/anonymous/62bd07425ac0dc62304a28501dc4c456) – ABC
@gist,我能够得到它的工作,并建立图像,但我仍然有运行它的问题。查看我的编辑更新的信息 –
您要添加的一切'/家庭/核心/应用/ APP-name',但你的WORKDIR是'/应用/ APP-name'。您也不要设置GOPATH,也不要指定要构建的包。如果您要在容器中构建应用程序,您仍然需要按照[如何编写Go代码](https://golang.org/doc/code.html) – JimB
中所述的方式设置适当的环境设置,我认为你把'/ home/core/app/app-name'中的文件而不是'/ app/app-name'。尝试使目标一致,也许'RUN去建立-o main/app/app-name'和'CMD [“/ app/app-name/main”]' – Plato
@Plato,我试过了,但我仍然得到了相同的输出。 –