3.6 使用 Docker 镜像

Deis 支持通过使用一个已经存在的 Docker 镜像来部署应用程序。这对于把 Deis 集成到基于 Docker 的 CI/CD pipelines 中非常有用。

提取准备应用程序

从 clone 一个示例应用程序开始:

  1. $ git clone https://github.com/deis/example-go.git
  2. $ cd example-go
  3. $ git checkout docker

下一步使用你本地的 docker 客户端来构建镜像并 push 到 DockerHub

  1. $ docker build -t <username>/example-go .
  2. $ docker push <username>/example-go

Docker 镜像要求

为了部署 Docker 镜像,它们必须使以下的要求一致:

  • Dockerfile 必须暴露(EXPOSE)仅仅一个端口
  • 暴露的端口必须是一个 HTTP 服务,可以连接到一个 HTTP router
  • 必须为正在运行的容器规定一个默认的 CMD

注意
Dockerfiles 暴露超过一个端口将在 issue 1156 讨论(hit)。

创建一个应用程序

使用 deis createController 上创建一个应用程序。

  1. $ mkdir -p /tmp/example-go && cd /tmp/example-go
  2. $ deis create
  3. Creating application... done, created example-go

注意
deis 客户端使用当前目录的名字作为默认的应用名

部署应用程序

使用 deis pullDockerHub 或一个私有 registry 部署你的应用程序。

  1. $ deis pull gabrtv/example-go:latest
  2. Creating build... done, v2
  3. $ curl -s http://example-go.local3.deisapp.com
  4. Powered by Deis

因为你正在部署一个 Docker 镜像,在第一次部署时,cmd 进程类型是自动扩展到 1。

注意
很快就会支持 Docker registry 身份校验

定义进程类型

Docker 容器有默认的命令,通常由 CMD 指令规定。Deis 使用 cmd 进程类型引用这个默认命令。

当使用 Docke 镜像时,进程类似除了 cmd 其他是不支持的。