为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
弑天下 2023-03-29 16:03:40
我正在用 Go 构建一个网站,该网站通过 docker 托管在我的家庭服务器上。我想做什么: 我在本地更改我的网站/服务器,然后将它们推送到 github。我想编写一个 dockerfile,以便它从我的 github 中提取这些数据,构建图像,然后我的 docker-compose 文件将使用它来创建容器。不幸的是,我所有的尝试都有些接近但错误。FROM golang:1.8-onbuildMAINTAINER <my info>RUN go get <my github url>ENV webserver_path /website/ENV PATH $PATH: webserver_pathCOPY website/ .RUN go build .ENTRYPOINT ./websiteEXPOSE <ports>这个文件是我通过谷歌搜索找到的一些小指南的组合,但没有一个能给我我需要的信息,而且它从来没有奏效。我希望具有良好 docker 经验的人可以将 Dockerfile 放在一起供我用作指南,以便我可以找到我做错了什么?我认为我正在寻找的东西只需几行就可以完成,而我的代码比需要的要冗长一点。以下是额外但可能不必要的信息项目布局:数据:是我的 go 文件所在的位置旁注:这在尝试构建图像时引发了错误,关于不在环境路径中的一些事情。不确定这是否有帮助静态:CSS、JS、图片TPL:转到模板文件Main.go : 启动服务器/网站
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

有几种策略:

  • 使用预构建应用程序go build根据目标系统架构和操作系统(例如使用 GOOS 和 GOARCH 系统变量)使用命令构建您的应用程序,然后使用 COPY docker 命令将此构建的文件(带有资产和模板)移动到您的 WORKDIR,最后通过 CMD 或 ENTRYPOINT 运行它( 最后一个是可取的)。此示例的 Dockerfile 如下所示:

从头开始

环境端口 8000 暴露 $PORT

COPY 降临 / 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 作为准备使用的图像。


查看完整回答
反对 回复 2023-03-29
?
慕沐林林

TA贡献2016条经验 获得超9个赞

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



查看完整回答
反对 回复 2023-03-29
?
holdtom

TA贡献1805条经验 获得超10个赞

我能够通过通过 docker hub 创建自动构建并将其用于我的 dockerfile 来解决我的问题:

FROM golang-onbuild
EXPOSE <ports>

这不是我的问题的正确答案,但它是一种有效的解决方法。自动构建以我希望我的 dockerfile 的方式与我的 github 存储库连接。


查看完整回答
反对 回复 2023-03-29
  • 3 回答
  • 0 关注
  • 297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信