3.6 使用 Docker 镜像
Deis 支持通过使用一个已经存在的 Docker 镜像来部署应用程序。这对于把 Deis 集成到基于 Docker 的 CI/CD pipelines 中非常有用。
提取准备应用程序
从 clone 一个示例应用程序开始:
$ git clone https://github.com/deis/example-go.git
$ cd example-go
$ git checkout docker
下一步使用你本地的 docker 客户端来构建镜像并 push 到 DockerHub。
$ docker build -t <username>/example-go .
$ docker push <username>/example-go
Docker 镜像要求
为了部署 Docker 镜像,它们必须使以下的要求一致:
- Dockerfile 必须暴露(EXPOSE)仅仅一个端口
- 暴露的端口必须是一个 HTTP 服务,可以连接到一个 HTTP router
- 必须为正在运行的容器规定一个默认的 CMD
注意
Dockerfiles 暴露超过一个端口将在 issue 1156 讨论(hit)。
创建一个应用程序
使用 deis create
在 Controller 上创建一个应用程序。
$ mkdir -p /tmp/example-go && cd /tmp/example-go
$ deis create
Creating application... done, created example-go
注意
deis 客户端使用当前目录的名字作为默认的应用名
部署应用程序
使用 deis pull
从 DockerHub 或一个私有 registry 部署你的应用程序。
$ deis pull gabrtv/example-go:latest
Creating build... done, v2
$ curl -s http://example-go.local3.deisapp.com
Powered by Deis
因为你正在部署一个 Docker 镜像,在第一次部署时,cmd 进程类型是自动扩展到 1。
注意
很快就会支持 Docker registry 身份校验
定义进程类型
Docker 容器有默认的命令,通常由 CMD 指令规定。Deis 使用 cmd
进程类型引用这个默认命令。
当使用 Docke 镜像时,进程类似除了 cmd 其他是不支持的。