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 helloworld 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 theIP 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, orread complete instructions of use for the tsuru command.