Ops Docker it is #2: Build a Docker Image for Flask Application

Let's first start with creating the Docker file where we will pull Python 3.9 image.

Flask Dockerfile template

FROM python:3.9.7
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python3"]
CMD ["app.py"]

Here we are pulling Python 3.9.7 image from the Python dockerhub repository.

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

WORKDIR
It's a directory inside container image that can be set with the WORKDIR instruction in the Dockerfile.

RUN command will install all the required packages for the Dockerfile.

EXPOSE
The EXPOSE instruction tells Docker to get all its information required during the runtime from a specified Port.

ENTRYPOINT
The initiating point for the dockerfile while we run it. ENTRYPOINT command and parameters will not be overwritten from the command line. Instead, all command-line arguments will be added after ENTRYPOINT parameters.

CMD
CMD instruction is used to define what command the container should execute when launched and CMD sets default command and/or parameters, which can be overwritten from the command line when the docker container runs.

Now Let's run the Docker command for building the image

docker build -t asmi-flask .
This will build the image(asmi-flask) for the flask application. Give it a tag -t called asmi-flask.

docker run -p 5000:5000 asmi-flask
In this command we tell docker to run an image called asmi-flask. -p Publish a container's port(s) to the host. Since Flask is running on port 5000 by default, the second part of this flag needs to be 5000.

After this, we can run docker ps command to check if the image has been built or not.

Output:

ubntu@asmijafar20:~/Flask-App$ docker images
REPOSITORY              TAG          IMAGE ID       CREATED       SIZE
asmijafar20/dockerhub   asmi-flask   2e155e2820a0   3 days ago    922MB

In the next blog, we can build CI/CD pipelines and configure them using GitHub Actions.

Till then Happy Coding!

17