Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved) You can also remove the old dangling images: docker image prune. Below is a sample of child docker file. FROM base-image:latest #dist2 contains parent and child wheel files COPY src/dist /dist2 RUN ls /dist2/. ARG httpproxy ARG httpsproxy ARG noproxy RUN python3 -m pip install -user -upgrade setuptools wheel && python3 -m pip install /dist2/.whl – Code Enthusiast Mar 10 at 15:46.
Estimated reading time: 8 minutes
This quick-start guide demonstrates how to use Docker Compose to set up and run a simple Django/PostgreSQL app. Before starting,install Compose.
Define the project components
For this project, you need to create a Dockerfile, a Python dependencies file,and a docker-compose.yml
file. (You can use either a .yml
or .yaml
extension for this file.)
Python 3 Docker Container Set
Create an empty project directory.
You can name the directory something easy for you to remember. This directory is the context for your application image. The directory should only contain resources to build that image.
Create a new file called
Dockerfile
in your project directory.The Dockerfile defines an application's image content via one or more build commands that configure that image. Once built, you can run the image in a container. For more information on
Dockerfile
, see the Docker user guide and the Dockerfile reference.Add the following content to the
Dockerfile
.This
Dockerfile
starts with a Python 3 parent image.The parent image is modified by adding a newcode
directory. The parent image is further modifiedby installing the Python requirements defined in therequirements.txt
file.Save and close the
Dockerfile
.Create a
requirements.txt
in your project directory.This file is used by the
RUN pip install -r requirements.txt
command in yourDockerfile
.Add the required software in the file.
Save and close the
requirements.txt
file.Create a file called
docker-compose.yml
in your project directory.The
docker-compose.yml
file describes the services that make your app. In this example those services are a web server and database. The compose file also describes which Docker images these services use, how they link together, any volumes they might need to be mounted inside the containers. Finally, thedocker-compose.yml
file describes which ports these services expose. See thedocker-compose.yml
reference for more information on how this file works.Add the following configuration to the file.
This file defines two services: The
db
service and theweb
service.Note:
This uses the build in development server to run your applicationon port 8000. Do not use this in a production environment. For moreinformation, see Django documentation.
Save and close the
docker-compose.yml
file.
Create a Django project
In this step, you create a Django starter project by building the image from the build context defined in the previous procedure.
Change to the root of your project directory.
Create the Django project by running the docker-compose runcommand as follows.
This instructs Compose to run
django-admin startproject composeexample
in a container, using theweb
service's image and configuration. Becausetheweb
image doesn't exist yet, Compose builds it from the currentdirectory, as specified by thebuild: .
line indocker-compose.yml
.Once the
web
service image is built, Compose runs it and executes thedjango-admin startproject
command in the container. This commandinstructs Django to create a set of files and directories representing aDjango project.After the
docker-compose
command completes, list the contents of your project.If you are running Docker on Linux, the files
django-admin
created areowned by root. This happens because the container runs as the root user.Change the ownership of the new files.If you are running Docker on Mac or Windows, you should alreadyhave ownership of all files, including those generated by
django-admin
. List the files just to verify this.
Connect the database
In this section, you set up the database connection for Django.
In your project directory, edit the
composeexample/settings.py
file.Replace the
DATABASES = ...
with the following:These settings are determined by thepostgres Docker imagespecified in
docker-compose.yml
.Save and close the file.
Run the docker-compose up command from the top level directory for your project.
At this point, your Django app should be running at port
8000
onyour Docker host. On Docker Desktop for Mac and Docker Desktop for Windows, gotohttp://localhost:8000
on a web browser to see the Djangowelcome page.Note:
On certain platforms (Windows 10), you might need to edit
ALLOWED_HOSTS
insidesettings.py
and add your Docker host name or IP address to the list.For demo purposes, you can set the value to:This value is not safe for production usage. Refer to theDjango documentation for more information.
List running containers.
In another terminal window, list the running Docker processes with the
docker ps
ordocker container ls
command.Shut down services and clean up by using either of these methods:
Stop the application by typing
Ctrl-C
in the same shell in where youstarted it:Or, for a more elegant shutdown, switch to a different shell, and rundocker-compose down from the top level of yourDjango sample project directory.
Python 3 Docker Container Tote
Once you've shut down the app, you can safely remove the Django project directory (for example, rm -rf django
).
Python Docker Container Tutorial
More Compose documentation
Python Docker Container
Define the project components
For this project, you need to create a Dockerfile, a Python dependencies file,and a docker-compose.yml
file. (You can use either a .yml
or .yaml
extension for this file.)
Python 3 Docker Container Set
Create an empty project directory.
You can name the directory something easy for you to remember. This directory is the context for your application image. The directory should only contain resources to build that image.
Create a new file called
Dockerfile
in your project directory.The Dockerfile defines an application's image content via one or more build commands that configure that image. Once built, you can run the image in a container. For more information on
Dockerfile
, see the Docker user guide and the Dockerfile reference.Add the following content to the
Dockerfile
.This
Dockerfile
starts with a Python 3 parent image.The parent image is modified by adding a newcode
directory. The parent image is further modifiedby installing the Python requirements defined in therequirements.txt
file.Save and close the
Dockerfile
.Create a
requirements.txt
in your project directory.This file is used by the
RUN pip install -r requirements.txt
command in yourDockerfile
.Add the required software in the file.
Save and close the
requirements.txt
file.Create a file called
docker-compose.yml
in your project directory.The
docker-compose.yml
file describes the services that make your app. In this example those services are a web server and database. The compose file also describes which Docker images these services use, how they link together, any volumes they might need to be mounted inside the containers. Finally, thedocker-compose.yml
file describes which ports these services expose. See thedocker-compose.yml
reference for more information on how this file works.Add the following configuration to the file.
This file defines two services: The
db
service and theweb
service.Note:
This uses the build in development server to run your applicationon port 8000. Do not use this in a production environment. For moreinformation, see Django documentation.
Save and close the
docker-compose.yml
file.
Create a Django project
In this step, you create a Django starter project by building the image from the build context defined in the previous procedure.
Change to the root of your project directory.
Create the Django project by running the docker-compose runcommand as follows.
This instructs Compose to run
django-admin startproject composeexample
in a container, using theweb
service's image and configuration. Becausetheweb
image doesn't exist yet, Compose builds it from the currentdirectory, as specified by thebuild: .
line indocker-compose.yml
.Once the
web
service image is built, Compose runs it and executes thedjango-admin startproject
command in the container. This commandinstructs Django to create a set of files and directories representing aDjango project.After the
docker-compose
command completes, list the contents of your project.If you are running Docker on Linux, the files
django-admin
created areowned by root. This happens because the container runs as the root user.Change the ownership of the new files.If you are running Docker on Mac or Windows, you should alreadyhave ownership of all files, including those generated by
django-admin
. List the files just to verify this.
Connect the database
In this section, you set up the database connection for Django.
In your project directory, edit the
composeexample/settings.py
file.Replace the
DATABASES = ...
with the following:These settings are determined by thepostgres Docker imagespecified in
docker-compose.yml
.Save and close the file.
Run the docker-compose up command from the top level directory for your project.
At this point, your Django app should be running at port
8000
onyour Docker host. On Docker Desktop for Mac and Docker Desktop for Windows, gotohttp://localhost:8000
on a web browser to see the Djangowelcome page.Note:
On certain platforms (Windows 10), you might need to edit
ALLOWED_HOSTS
insidesettings.py
and add your Docker host name or IP address to the list.For demo purposes, you can set the value to:This value is not safe for production usage. Refer to theDjango documentation for more information.
List running containers.
In another terminal window, list the running Docker processes with the
docker ps
ordocker container ls
command.Shut down services and clean up by using either of these methods:
Stop the application by typing
Ctrl-C
in the same shell in where youstarted it:Or, for a more elegant shutdown, switch to a different shell, and rundocker-compose down from the top level of yourDjango sample project directory.
Python 3 Docker Container Tote
Once you've shut down the app, you can safely remove the Django project directory (for example, rm -rf django
).