一、什么是Dockerfile?

Dockerfile是一个包含用于构建镜像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成镜像。它们简化了从头到尾的流程并极大的简化了部署工作。
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
Dockerfile相关语法详见传送门。

二、手动构建镜像

以Github仓库go-web-form为例,在项目根目录下创建Dockerfile,内容如下:

FROM golang:1.9
MAINTAINER liuyh73  "15989067460@163.com"
# 该指令用于配置工作目录,其参数应该使用绝对目录。
WORKDIR $GOPATH/src/github.com/liuyh73/go-web-form
# ADD不但支持将本地文件复制到容器中,还支持本地提取文件和远程url下载
# ADD <src> <dst>
ADD . $GOPATH/src/github.com/liuyh73/go-web-form
RUN go get github.com/gorilla/mux
RUN go get github.com/codegangsta/negroni
RUN go get github.com/unrolled/render
RUN go get github.com/spf13/pflag
RUN go build .
# 该指令指示容器讲监听链接的端口,类似于,将容器中的某一个端口暴露出去,从而在外部访问绑定该端口。
EXPOSE 8080
# ENTRYPOINT允许你配置作为可执行文件运行的容器
ENTRYPOINT ["./go-web-form"]

然后使用docker命令构建镜像:

$ sudo docker build .

如果尚未安装docker,请点击这里

三、自动构建镜像

I、连接设置

用户Github和Docker Hub账号,登录Docker Hub:

选择Profile > Settings > Linked Accounts & Services

按照提示关联GitHub账户:

docker用git的文件到哪里了 github dockerfile_Docker


docker用git的文件到哪里了 github dockerfile_github_02


然后选择Github创建连接即可:

docker用git的文件到哪里了 github dockerfile_github_03

II、创建自动连接

自动构建仓库依靠与代码仓库的集成来构建。也可以使用 docker push 命令将已构建的镜像推送到仓库。

  • 1.选择Created> Create Automated Build 选择Github
  • docker用git的文件到哪里了 github dockerfile_Docker_04


  • 2.选择仓库(在此选择go-web-form)
  • 3.创建镜像仓库
  • 4.Github该项目仓库中出现Docker集成
  • 5.触发构建镜像(点击Trigger)
  • 6.构建成功

III、构建过程及状态

Docker通过读取Dockerfile中的指令自动生成映像。
通过查看 Build Details 页面,可以查看特定仓库的构建状态。如果有正在排队或正在进行的构建,则可以单击 Cancel 来取消构建。状态有:
Queued:排队等待构建镜像。队列时间取决于你可以使用的并发构建数量。
Building:正在构建镜像。
Success:镜像构建成功,没有问题。
Error: 镜像出了问题。点击对应行进入 Builds Details 页面。页面顶部的 banner 显示日志文件的最后一句话,指明错误是什么。如果需要更多信息,滚动至屏幕底部的日志部分。
【参考链接】
GitHub+Docker Hub实现自动构建镜像