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

时间:2018-09-03 19:07:31

标签: docker go dockerfile

我正在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>

此文件是我通过Google搜索找到的一些小指南的组合,但没有一个给我我所需的信息,并且从未奏效。

我希望拥有不错的Docker经验的人可以将Dockerfile放在一起作为我的指南,以便我能发现自己在做错什么?我认为我要寻找的内容仅需几行就可以完成,而我的则比所需的还要冗长。

其他但可能会在下面出现不必要的信息

项目布局:

enter image description here

数据:这是我的go文件所在的地方注:在尝试构建映像时,这会向我抛出错误,这与不在环境路径中有关。不确定是否有帮助

静态:CSS,JS,图像

TPL :转到模板文件

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

3 个答案:

答案 0 :(得分:1)

有几种策略:

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

从零开始

     

ENV PORT 8000 EXPOSE $ PORT

     

COPY出现/ CMD [“ / advent”]

  • 通过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,以准备使用图像。

答案 1 :(得分:0)

Github支持Webhooks,当您推送到git repo时,它可以自动执行各种操作。由于您已经在家庭计算机上运行了Web服务器,因此当Github在USB debugging上收到提交并让您的家庭计算机重新下载git repo时,为什么不向它发送POST请求呢?从那里重启Web服务?

答案 2 :(得分:0)

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

FROM golang-onbuild
EXPOSE <ports>

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