1
0
mirror of https://github.com/moby/moby.git synced 2025-12-10 21:42:47 +03:00
Files
moby/docs/sources/examples/python_web_app.rst
James Turnbull 1cb4557cc8 A variety of syntax and style fixes for the Docker examples
* Made Docker a proper noun when needed.
* Fixed code syntax
* Fixed some whitespace issues
* Fixed some typos and grammar
* Tidied up some examples
2013-11-02 18:26:52 -07:00

3.4 KiB

title
Python Web app example
description
Building your own python web app using docker
keywords
docker, example, python, web app

Python Web App

The goal of this example is to show you how you can author your own Docker images using a parent image, making changes to it, and then saving the results as a new image. We will do that by making a simple hello Flask web application image.

Steps:

sudo docker pull shykes/pybuilder

We are downloading the shykes/pybuilder Docker image

URL=http://github.com/shykes/helloflask/archive/master.tar.gz

We set a URL variable that points to a tarball of a simple helloflask web app

BUILD_JOB=$(sudo docker run -d -t shykes/pybuilder:latest /usr/local/bin/buildapp $URL)

Inside of the shykes/pybuilder image there is a command called buildapp, we are running that command and passing the $URL variable from step 2 to it, and running the whole thing inside of a new container. The BUILD_JOB environment variable will be set with the new container ID.

sudo docker attach $BUILD_JOB
[...]

While this container is running, we can attach to the new container to see what is going on. You can use Ctrl-C to disconnect.

sudo docker ps -a

List all Docker containers. If this container has already finished running, it will still be listed here.

BUILD_IMG=$(sudo docker commit $BUILD_JOB _/builds/github.com/shykes/helloflask/master)

Save the changes we just made in the container to a new image called _/builds/github.com/hykes/helloflask/master and save the image ID in the BUILD_IMG variable name.

WEB_WORKER=$(sudo docker run -d -p 5000 $BUILD_IMG /usr/local/bin/runapp)
  • "docker run -d " run a command in a new container. We pass "-d" so it runs as a daemon.
  • "-p 5000" the web app is going to listen on this port, so it must be mapped from the container to the host system.
  • "$BUILD_IMG" is the image we want to run the command inside of.
  • /usr/local/bin/runapp is the command which starts the web app.

Use the new image we just created and create a new container with network port 5000, and return the container ID and store in the WEB_WORKER variable.

sudo docker logs $WEB_WORKER
 * Running on http://0.0.0.0:5000/

View the logs for the new container using the WEB_WORKER variable, and if everything worked as planned you should see the line Running on http://0.0.0.0:5000/ in the log output.

WEB_PORT=$(sudo docker port $WEB_WORKER 5000)

Look up the public-facing port which is NAT-ed. Find the private port used by the container and store it inside of the WEB_PORT variable.

# install curl if necessary, then ...
curl http://127.0.0.1:$WEB_PORT
  Hello world!

Access the web app using the curl binary. If everything worked as planned you should see the line Hello world! inside of your console.

Video:

See the example in action

Continue to running_ssh_service.