Dockerfile for Python Application
What is Dockerfile
A Dockerfile is used to create a docker image. The Dockerfile contains all the commands that can be executed on command line to build an image. It's just a group of all commands that gets executed all together.
There are some common steps that are required to build an images for an application.
Point a base image
To build a Dockerfile for python application, a python base image should pointed. In the below example I have used python 3.9.7 image. There are different flavors of a python image like python:<version>
, python:<version>-slim
, python:<version>-alpine
and python:<version>-windowsservercore
.
FROM python:3.9.7
Create application directory
The base image comes with some directories but always create your application directory. Create an application folder using below command.
RUN mkdir -p /home/app
Set root directory
Set the root directory where all the commands gets executed without telling the path. It should be absolute path.
WORKDIR /home/app
Copy source code
Now the source code from your local directory should be copied to the application directory created inside the Dockerfile.
COPY ./src/. /home/app/
Install dependencies
Install all python module dependencies. Python dependencies can be defined in requirements.txt file like package.json file. Use the below command to install all python dependencies.
RUN pip install --no-cache-dir -r requirements.txt
Command to init the application
A command the inits the application should be defined and that should run when the docker image runs. The CMD
instruction is used to define such commands.
CMD [ "python", "index.py" ]
Complete Dockerfile
Here is the complete Dockerfile.
FROM python:3.9.7
LABEL maintainer="Onkar <onkar@gmail.com>"
RUN mkdir -p /home/app
WORKDIR /home/app
COPY ./src/. /home/app/
RUN pip install --no-cache-dir -r requirements.txt
CMD [ "python", "index.py" ]
Once you create a Dockerfile, put that file in the root of your application.
Create Image
The docker build
command is used to create a build. The below command will create a python application image (python_app_image) that your can run.
docker build -t python_app_image .
Run a Dockerfile
The docker run
command is used to run a docker image. The below command will run the python image as container and the application will be accessible on 8000 port on localhost.
docker run -p 8000:8000 python_app