This document discusses how to use Docker to containerize and deploy Python web applications. It provides steps to install Docker, build a sample Flask application into a Docker image, run the container locally, and deploy the containerized application to AWS. Key points covered include using Dockerfiles to create images, the Docker index for sharing images, and port mapping when running containers.
18. Install and Run
flask-sample Locally
• sudo apt-get install -y python-setuptools
• sudo easy_install pip
• sudo pip install -r requirements.txt
• python app.py
* Running on http://0.0.0.0:5000/
19. How to build a
Docker Image
• Dockerfile
http://docs.docker.io/reference/builder/
20. Dockerfile
FROM ubuntu
!
# Install Python Setuptools
RUN apt-get install -y python-setuptools
!
# Install pip
RUN easy_install pip
!
# Install requirements.txt
ADD requirements.txt /src/requirements.txt
RUN cd /src; pip install -r requirements.txt
!
# Add the Flask App
ADD . /src
!
# EXPOSE PORT
EXPOSE 5000
!
# Run the Flask APP
CMD python src/app.py
21. Build a Image
• docker build -t <image name> <Dockerfile PATH>
• docker build -t myapp .
Uploading context 76.29 kB
Uploading context
Step 0 : FROM ubuntu
---> 99ec81b80c55
Step 1 : RUN apt-get install -y python-setuptools
---> Using cache
---> d651a6cb230c
Step 2 : RUN easy_install pip
---> Using cache
---> ecf1474da849
Step 3 : ADD requirements.txt /src/requirements.txt
---> Using cache
---> 274c84b5415e
!
… (ignore) …
!
Successfully built b4c78de4abc1
22. Check Your new Image
• docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
myapp latest b4c78de4abc1 2 minutes ago 302.7 MB
ubuntu 13.10 5e019ab7bf6d 3 weeks ago 180 MB
ubuntu saucy 5e019ab7bf6d 3 weeks ago 180 MB
ubuntu 12.04 74fe38d11401 3 weeks ago 209.6 MB
ubuntu precise 74fe38d11401 3 weeks ago 209.6 MB
ubuntu 12.10 a7cf8ae4e998 3 weeks ago 171.3 MB
ubuntu quantal a7cf8ae4e998 3 weeks ago 171.3 MB
ubuntu 14.04 99ec81b80c55 3 weeks ago 266 MB
ubuntu latest 99ec81b80c55 3 weeks ago 266 MB
ubuntu trusty 99ec81b80c55 3 weeks ago 266 MB
ubuntu raring 316b678ddf48 3 weeks ago 169.4 MB
ubuntu 13.04 316b678ddf48 3 weeks ago 169.4 MB
23. Run It!
• docker run -d -p 5000:5000 myapp
-d detached mode
-p port forwarding
24. How to check the
Running Docker Process?
• docker ps
CONTAINER ID IMAGE COMMAND … PORTS
6294c5a5e9be myapp:latest /bin/sh -c 'python s … 0.0.0.0:5000->5000/tcp
• To kill the process, use
docker kill <CONTAINER ID>
25. Docker Index
• https://index.docker.io/
• You might think it as the GitHub For Docker Image
• You can pull mysql, mongodb, hadoop, … etc
• You can hook your docker index repository on to
your own repository on GitHub!!!
-> Build images automatically once you push something to Github
26. The Repository for our
flask-sample
• https://index.docker.io/u/waitingkuo/flask-sample/
27. Deploy!
• Use whatever you want to login to your production
server (ssh, fabric, capistrano, chef, puppet, ….)
• docker pull waitingkuo/flask-sample
• docker run -d -p 5000:5000 waitingkuo/flask-
sample