[Docker Administration] [Part II] Dockerizing Application Flask

Published: by Creative Commons Licence

The next Step continuous from Docker Administration

Create Folder Project

mkdir -p Project/Flask
cd Project/Flask

Create requirements.txt file

echo -e "Flask\nRedis" > requirements.txt

Create app.py

vim app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Create Dockerfile

vim Dockerfile

Fill with this Instruction:

FROM python:2.7-slim
RUN mkdir -p /app
WORKDIR /app 
ADD . /app
RUN cd /app && pip install  -r /app/requirements.txt 
EXPOSE 80 
ENV NAME World 
CMD ["python", "app.py"] 

Build Docker File Using Image friendlyhello

sudo docker build -t friendlyhello .

Show Images

sudo docker image ls

Running Image As Container

sudo docker run -d -p 4000:80 friendlyhello

Show Container UP

sudo docker container ls

Validation or test applicaiton

curl http://localhost:4000

Stop Container

sudo docker container stop [CONTAINER ID]

Show Container

sudo docker container ls -a