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
Ramon van Alteren 559724ac35 Update python_web_app.rst
Fixed typo in the WEB_PORT command, missing sudo in front of docker command
2013-08-30 00:37:47 +02:00

3.3 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. BUILD_JOB 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. 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 curl. 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.