Building a Docker Image for a Simple Hello World Flask Application
Introduction to Docker
Docker is a platform for developing, shipping, and running applications. It enables developers to package their code and dependencies into a standardized unit called a container. Containers are lightweight and portable, making them ideal for deploying applications across different environments.
What is an Image?
An image is a static representation of a container. It contains all the necessary code and dependencies required to run an application. Images can be created from scratch or by extending existing images.
Building a Hello World Flask Application Image
To build a Hello World Flask application image, follow these steps:
1. Create a Dockerfile*:
A Dockerfile is a text file that contains instructions for building a Docker image. For a simple Hello World Flask application, the Dockerfile might look like this:
FROM python:3.12-slim-buster
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
2. Create the Python Flask Application Code:
Create a file named app.py
with the following code:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, World!"
if __name__ == "__main__":
app.run(host='0.0.0.0')
3. Build the Image:
To build the image, run the following command:
docker build -t hello-world-flask .
Expected results:
To run the image, run the following command:
docker run -p 5000:5000 hello-world-flask
This will start a container based on the Hello World Flask application image and expose port 5000 of the container to port 5000 of the host machine.
5. Access the Application:
To access the application, open a web browser and navigate to http://localhost:5000
. You should see the Hello World message.
So, that's the end of this project, in case of any questions or errors, please write in the comments and i will resolve them.
Also i have the repo for the github actions you can check it.
github actions for flask application and Docker
Top comments (2)
Seems there is an error in your Dockerfile.
buster
,bullseye
, andbookworm
are the 3 alternative Docker images (beginning with the letter B) for Linux Distros. "burster" (with an 'r') is a typo.Also, Python 3.8 was release in 2019 and scheduled for end of life this year (2024). Python 3.12 is the most current package. Any particular reason you are using an outdated version for this example?
Thank you for pointing that out Sir @tpoisson805 , i will update.