DEV Community

Cover image for Dockerfile for a Python application
Megha Sharma
Megha Sharma

Posted on

Dockerfile for a Python application

Let’s create a simple Dockerfile for a Python application. This example assumes you have a Python script named app.py and a requirements.txt file containing the dependencies for your application.

  1. Open a terminal.
  2. Navigate to the directory where you want to create or edit the Dockerfile.
  3. Type vi Dockerfile and press Enter. This will open the vi editor with a new file named Dockerfile.
  4. Press i to enter insert mode. You can now start typing your Dockerfile contents.
  5. Once you’re done editing, press Esc to exit insert mode.
  6. Type :wq and press Enter to save the changes and exit vi. If you want to exit without saving, type :q! and press Enter.
# Use an official Python runtime as a parent image
FROM python:3.9-slim

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed dependencies specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 8080 available to the world outside this container
EXPOSE 8080

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]
Enter fullscreen mode Exit fullscreen mode

In this Dockerfile:

  • We’re using the official Python Docker image with version 3.9 (specifically, the slim variant, which is smaller).
  • We set the working directory inside the container to /app.
  • We copy the current directory (where your app.py and requirements.txt files should reside) into the container at /app.
  • We install the Python dependencies specified in requirements.txt.
  • We expose port 8080 to allow communication with the container.
  • We set an environment variable NAME to "World" (you can change this as needed).
  • Finally, we specify that the command to run when the container starts is python app.py.

To build an image using this Dockerfile, navigate to the directory containing the Dockerfile and run:

docker build -t my-python-app .
Enter fullscreen mode Exit fullscreen mode

Replace my-python-app with the desired name for your Docker image.

After building the image, you can run a container from it using:

docker run -p 8080:8080 my-python-app
Enter fullscreen mode Exit fullscreen mode

This command runs a container based on your Docker image, forwarding port 8080 from the container to port 8080 on your host machine. Adjust the port mapping as needed based on your application’s requirements.

Top comments (1)

Collapse
 
bala_murugank_f80c572673 profile image
BALA MURUGAN K

Hi author ,I have a question for you , consider we are deploying the python app in on Prem , how can we hide the code , by building it as Binary? How will you write docker file for it