【Deis文档】使用Deis之使用 Dockerfiles

注:本文翻译自Deis官方文档,无任何商业目的,转载请注明出处。

Deis 支持通过 Dockerfiles 部署应用程序。一个 Dockerfile 能自动化制作一个 Docker 镜像的步骤。Dockerfiles 是难以置信的强大,但是要求一些额外的工作来定义你需要的应用程序运行环境。

预先准备应用程序

如果你没有一个已经存在的应用程序,你可以 clone 一个示例应用程序来证明 Dockerfile 工作流。
$ git clone https://github.com/deis/helloworld.git $ cd helloworld

Dockerfile 要求

为了部署 Dockerfile 应用程序,它们必须是的以下的需求一致:
- Dockerfile 必须暴露(EXPOSE)仅仅一个端口
- 暴露的端口必须是一个 HTTP 服务,可以连接到一个 HTTP router
- 必须为正在运行的容器规定一个默认的 CMD

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

创建一个应用程序

使用 deis createController 创建一个应用程序。
$ deis create Creating application... done, created folksy-offshoot
Git remote deis added

使用 push 部署

使用 git push deis master 部署你的应用程序。

$ git push deis master
  Counting objects: 13, done.
  Delta compression using up to 8 threads.
  Compressing objects: 100% (13/13), done.
  Writing objects: 100% (13/13), 1.99 KiB | 0 bytes/s, done.
  Total 13 (delta 2), reused 0 (delta 0)
  -----> Building Docker image
  Uploading context 4.096 kB
  Uploading context
  Step 0 : FROM deis/base:latest
  ---> 60024338bc63
  Step 1 : MAINTAINER OpDemand <info@opdemand.com>
  ---> Using cache
  ---> 2af5ad7f28d6
  Step 2 : RUN wget -O /tmp/go1.2.1.linux-amd64.tar.gz -q https://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz
  ---> Using cache
  ---> cf9ef8c5caa7
  Step 3 : RUN tar -C /usr/local -xzf /tmp/go1.2.1.linux-amd64.tar.gz
  ---> Using cache
  ---> 515b1faf3bd8
  Step 4 : RUN mkdir -p /go
  ---> Using cache
  ---> ebf4927a00e9
  Step 5 : ENV GOPATH /go
  ---> Using cache
  ---> c6a276eded37
  Step 6 : ENV PATH /usr/local/go/bin:/go/bin:$PATH
  ---> Using cache
  ---> 2ba6f6c9f108
  Step 7 : ADD . /go/src/github.com/deis/helloworld
  ---> 94ab7f4b977b
  Removing intermediate container 171b7d9fdb34
  Step 8 : RUN cd /go/src/github.com/deis/helloworld && go install -v .
  ---> Running in 0c8fbb2d2812
  github.com/deis/helloworld
  ---> 13b5af931393
  Removing intermediate container 0c8fbb2d2812
  Step 9 : ENV PORT 80
  ---> Running in 9b07da36a272
  ---> 2dce83167874
  Removing intermediate container 9b07da36a272
  Step 10 : CMD ["/go/bin/helloworld"]
  ---> Running in f7b215199940
  ---> b1e55ce5195a
  Removing intermediate container f7b215199940
  Step 11 : EXPOSE 80
  ---> Running in 7eb8ec45dcb0
  ---> ea1a8cc93ca3
  Removing intermediate container 7eb8ec45dcb0
  Successfully built ea1a8cc93ca3
  -----> Pushing image to private registry
  
     Launching... done, v2
  
  -----> folksy-offshoot deployed to Deis
     http://folksy-offshoot.local.deisapp.com
  
     To learn more, use `deis help` or visit http://deis.io
  
  To ssh://git@local.deisapp.com:2222/folksy-offshoot.git
  * [new branch]      master -> master
  
  $ curl -s http://folksy-offshoot.local.deisapp.com
  Welcome to Deis!
  See the documentation at http://docs.deis.io/ for more information.

因为一个 Dockerfile 应用程序被检测到,在第一次部署的时,cmd 进程类型被自动扩展成 1。

定义进程类型

Docker 容器有默认的命令,通常由 CMD 指令规定。Deis 使用 cmd 进程类型引用这个默认命令。
Deis 也支持扩展其他的进程类型(process types)定义在一个 Procfile。为了使用这个功能,你必须:
1. 使用你的 repository root 目录的 Procfile 定义进程类型(process types)
2. 包含一个 start 可执行程序,可以使用 start &lt;process-type> 调用

docker

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: