如何编写 dockerfile 以正确地从我的 github 中提取代码

我正在用 Go 构建一个网站,该网站通过 docker 托管在我的家庭服务器上。


我想做什么: 我在本地更改我的网站/服务器,然后将它们推送到 github。我想编写一个 dockerfile,以便它从我的 github 中提取这些数据,构建图像,然后我的 docker-compose 文件将使用它来创建容器。


不幸的是,我所有的尝试都有些接近但错误。


FROM golang:1.8-onbuild

MAINTAINER <my info>

RUN go get <my github url>

ENV webserver_path /website/

ENV PATH $PATH: webserver_path

COPY website/ .

RUN go build .

ENTRYPOINT ./website

EXPOSE <ports>

这个文件是我通过谷歌搜索找到的一些小指南的组合,但没有一个能给我我需要的信息,而且它从来没有奏效。


我希望具有良好 docker 经验的人可以将 Dockerfile 放在一起供我用作指南,以便我可以找到我做错了什么?我认为我正在寻找的东西只需几行就可以完成,而我的代码比需要的要冗长一点。


以下是额外但可能不必要的信息


项目布局:

http://img4.mukewang.com/6423f0fc0001aa3602790190.jpg

数据:是我的 go 文件所在的位置旁注:这在尝试构建图像时引发了错误,关于不在环境路径中的一些事情。不确定这是否有帮助

静态:CSS、JS、图片

TPL:转到模板文件

Main.go : 启动服务器/网站


弑天下
浏览 298回答 3
3回答

凤凰求蛊

有几种策略:使用预构建应用程序。go build根据目标系统架构和操作系统(例如使用 GOOS 和 GOARCH 系统变量)使用命令构建您的应用程序,然后使用 COPY docker 命令将此构建的文件(带有资产和模板)移动到您的 WORKDIR,最后通过 CMD 或 ENTRYPOINT 运行它(&nbsp;最后一个是可取的)。此示例的 Dockerfile 如下所示:从头开始环境端口 8000 暴露 $PORTCOPY 降临 / CMD ["/降临"]通过 dockerfile 构建。典型的 Dockerfile:# Start from a Debian image with the latest version of Go installed# and a workspace (GOPATH) configured at /go.FROM golang# Copy the local package files to the container's workspace.ADD . /go/src/github.com/golang/example/outyet# Build the outyet command inside the container.# (You may fetch or manage dependencies here,# either manually or with a tool like "godep".)RUN go install github.com/golang/example/outyet# Run the outyet command by default when the container starts.ENTRYPOINT /go/bin/outyet# Document that the service listens on port 8080.EXPOSE 8080使用 GitHub。构建您的应用程序并将其拉到 dockerhub 作为准备使用的图像。

慕沐林林

Github 支持Webhooks,当你推送到 git repo 时,它可以用来自动做各种事情。既然你已经在你的家庭机器上运行了一个网络服务器,为什么你不让 Github 在它收到提交时向它发送一个 POST 请求并让master你的家庭机器重新下载 git repo 并从那里重新启动网络服务?

holdtom

我能够通过通过 docker hub 创建自动构建并将其用于我的 dockerfile 来解决我的问题:FROM&nbsp;golang-onbuild EXPOSE&nbsp;<ports>这不是我的问题的正确答案,但它是一种有效的解决方法。自动构建以我希望我的 dockerfile 的方式与我的 github 存储库连接。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go