Deploying Docker Image applications¶
Overview¶
This document is a hands-on guide to deploy a simple Docker Image web application.
Creating the app¶
To create an app, you need to use the command app-create:
$ tsuru app-create <app-name> <app-platform>
For Docker Images, doesn’t exist a specific platform, but we can use static
! Let’s be over creative and develop a hello
world tutorial-app, let’s call it “helloworld”:
$ tsuru app-create helloworld static
To list all available platforms, use the command platform-list.
You can see all your applications using the command app-list:
$ tsuru app-list
+-------------+-------------------------+--------------------------------+
| Application | Units State Summary | Address |
+-------------+-------------------------+--------------------------------+
| helloworld | 0 of 0 units in-service | helloworld.192.168.50.4.nip.io |
+-------------+-------------------------+--------------------------------+
Application code¶
A simple Dockerfile:
FROM golang
RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN go build .
ENTRYPOINT ./app
A simple web application in Go main.go:
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
go func(){
for sig := range c {
if sig == os.Interrupt || sig == os.Kill {
os.Exit(1)
}
}
}()
http.HandleFunc("/", hello)
fmt.Println("running on "+os.Getenv("PORT"))
http.ListenAndServe(":"+os.Getenv("PORT"), nil)
}
func hello(res http.ResponseWriter, req *http.Request) {
fmt.Fprintln(res, "hello, world!")
}
Building the image¶
docker login registry.myserver.com
docker build -t registry.myserver.com/image-name .
Don’t forget the dot(.) at the end of the command, this indicates where the Dockerfile is placed
Sending the image to registry¶
docker push registry.myserver.com/image-name
Docker Image deployment¶
After pushing your image to your Docker image registry, you can do the deploy using the command tsuru app-deploy -i.
tsuru app-deploy -i registry.myserver.com/image-name -a helloworld
Note
This image should be in a registry and be accessible by the nodes. Image should also have a Entrypoint or a Procfile at given paths, / or /app/user/ or /home/application/current
Running the application¶
Now that the app is deployed, you can access it from your browser, getting the
IP or host listed in app-list
and opening it. For example,
in the list below:
$ tsuru app-list
+-------------+-------------------------+--------------------------------+
| Application | Units State Summary | Address |
+-------------+-------------------------+--------------------------------+
| helloworld | 1 of 1 units in-service | helloworld.192.168.50.4.nip.io |
+-------------+-------------------------+--------------------------------+
It’s done! Now we have a simple Docker image project deployed on tsuru.
Now we can access your app in the URL displayed in app-list (“helloworld.192.168.50.4.nip.io” in this case).
Going further¶
For more information, you can dig into tsuru docs, or read complete instructions of use for the tsuru command.