我正在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放在一起供我作为指导,这样我就可以找到我做错了什么?我认为我正在寻找的只能在几行中完成,而且我的需要比需要的更冗长。
还有其他可能的不必要的信息
项目布局:
数据:我的go文件是Sidenote:这在尝试构建图像时给我带来了错误,而不是在环境路径中。不确定这是否有用
静态:CSS,JS,图像
TPL:去模板文件
Main.go:启动服务器/网站
Github支持Webhooks,当你推送到git repo时,它可以用来自动完成各种各样的事情。既然你已经在你的家庭盒子上运行了一个Web服务器,为什么你没有让Github在master
上收到提交并且你的homebox重新下载git repo并重新启动web服务时发送一个POST请求那?
有几种策略:
go build
命令构建应用程序,然后使用COPY docker命令将此构建文件(带有资源和模板)移动到WORKDIR,最后通过CMD或ENTRYPOINT运行它(最后是优选的)。此示例的Dockerfile如下所示:从头开始
ENV PORT 8000 EXPOSES $ PORT
COPY来临/ CMD [“/ advent”]
# 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
我只需通过docker hub创建一个自动构建就可以解决我的问题,只需将它用于我的dockerfile:
FROM golang-onbuild
EXPOSE <ports>
这不是我的问题的正确答案,但它是一个有效的解决方法。自动构建以我希望我的dockerfile的方式连接我的github repo。