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

问题描述 投票:0回答:3

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

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

我希望有一个具有不错的码头工作经验的人可以把Dockerfile放在一起供我作为指导,这样我就可以找到我做错了什么?我认为我正在寻找的只能在几行中完成,而且我的需要比需要的更冗长。

还有其他可能的不必要的信息

项目布局:

enter image description here

数据:我的go文件是Sidenote:这在尝试构建图像时给我带来了错误,而不是在环境路径中。不确定这是否有用

静态:CSS,JS,图像

TPL:去模板文件

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

docker go dockerfile
3个回答
0
投票

Github支持Webhooks,当你推送到git repo时,它可以用来自动完成各种各样的事情。既然你已经在你的家庭盒子上运行了一个Web服务器,为什么你没有让Github在master上收到提交并且你的homebox重新下载git repo并重新启动web服务时发送一个POST请求那?


1
投票

有几种策略:

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

从头开始

ENV PORT 8000 EXPOSES $ 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。

0
投票

我只需通过docker hub创建一个自动构建就可以解决我的问题,只需将它用于我的dockerfile:

FROM golang-onbuild
EXPOSE <ports>

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

© www.soinside.com 2019 - 2024. All rights reserved.