登录
首页 >  Golang >  Go问答

编写一个 Dockerfile 从 GitHub 中正确拉取代码

来源:stackoverflow

时间:2024-03-07 11:45:28 410浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《编写一个 Dockerfile 从 GitHub 中正确拉取代码》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

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

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

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

FROM golang:1.8-onbuild
MAINTAINER 
RUN go get 
ENV webserver_path /website/
ENV PATH $PATH: webserver_path
COPY website/ .
RUN go build .
ENTRYPOINT ./website
EXPOSE 

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

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

下面是其他但可能不必要的信息

项目布局:

数据:是我的 go 文件所在的位置旁注:在尝试构建映像时,这会引发错误,比如不在环境路径中。不确定这是否有帮助

静态:css、js、图像

tpl:转到模板文件

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


解决方案


Github 支持 Webhooks,当您推送到 git 存储库时,可以使用它自动执行各种操作。既然你已经在你的 home box 上运行了一个 Web 服务器,为什么你不让 Github 在收到 master 上的提交时向该服务器发送一个 POST 请求,并让你的 home box 重新下载 git 存储库并重新启动 Web 服务那?

有几种策略:

  • 使用预构建应用。使用构建您的应用程序 根据目标系统架构和操作系统(例如使用 GOOS 和 GOARCH 系统变量)执行 go build 命令,然后使用 COPY docker 命令将此构建的文件(包含资产和模板)移动到您的 WORKDIR,最后通过 CMD 或 ENTRYPOINT 运行它(最后是更可取)。此示例的 Dockerfile 如下所示:
  • 通过 dockerfile 构建。典型的 Dockerfile:
  • 使用 GitHub。构建您的应用程序并将其拉至 dockerhub 作为准备使用的映像。

本篇关于《编写一个 Dockerfile 从 GitHub 中正确拉取代码》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>