Deis supports deploying applications via an existing Docker Image. This is useful for integrating Deis into Docker-based CI/CD pipelines.
Start by cloning an example application:
$ git clone https://github.com/deis/example-go.git
$ cd example-go
$ git checkout docker
Next use your local docker client to build the image and push
it to DockerHub.
$ docker build -t <username>/example-go .
$ docker push <username>/example-go
In order to deploy Docker images, they must conform to the following requirements:
- The Dockerfile must use the
EXPOSEdirective to expose exactly one port. - That port must be listening for an HTTP connection.
- The Dockerfile must use the
CMDdirective to define the default process that will run within the container.
Use deis create to create an application on the controller.
$ mkdir -p /tmp/example-go && cd /tmp/example-go
$ deis create example-go --no-remote
Creating application... done, created example-go
!!! note
For all commands except for deis create, the deis client uses the name of the current directory
as the app name if you don't specify it explicitly with --app.
Use deis pull to deploy your application from DockerHub or
a public registry.
$ deis pull gabrtv/example-go:latest
Creating build... done, v2
$ curl -s http://example-go.local3.deisapp.com
Powered by Deis
Because you are deploying a Docker image, the cmd process type is automatically scaled to 1 on first deploy.
Use deis scale cmd=3 to increase cmd processes to 3, for example. Scaling a
process type directly changes the number of Containers
running that process.
To deploy Docker images from a private registry or even from a private repository within a public registry, take the following steps:
- Gather the username and password for the registry, such as a Quay.io Robot Accounts or GCR.io Long Lived Token
- Run
deis registry:set username=<the-user> password=<secret> -a <application-name> - Now perform
deis pullas normal, against an image in the private registry
When using a GCR.io Long Lived Token the JSON blob will have to be compacted first using a tool like jq
and then used in the password field in deis registry:set.
cat serviceaccount.json | jq -c . will compact the JSON blob using jq.
NOTE: Currently GCR.io and ECR in short lived auth token mode are not supported