From Setup to Deployment: Running a Flask App in Docker on Mac

Rajnish - Nov 2 - - Dev Community

Download Docker

Docker Images

  • Docker Images are the templates (blueprint) of the project
  • Images can not be updated it's read-only
  • It has Source code, Libraries, external dependencies, tools etc.

Docker Containers

  • Containers are the running instance of the Image
  • It runs independently on computer hence we can call it, it's an isolated process

Docker base Image or Parent Image

  • Example Python programming image which we can download from official website of Docker hub

How do we create Docker image

  • To create a Docker image, we write the details in a Dockerfile that contains instructions for building the image. When we build this Dockerfile, an image is generated, which we can then run as a container.

Now let's proceed with setup and run
After downloading docker desktop

  • search Python base image in docker hub pull it using Terminal or Docker Desktop

  • run using Terminal or Docker Desktop

    docker run -it --name rajnish_python python /bin/bash

rajnish_python container

now go to Container in docker desktop and see if it's running.

  • Open Container and explore it more by checking python version

Docker container explore

let's create a basic Python Flask web-app and run it through docker

  • either you can create a new web app or just clone my repository productivity

git clone https://github.com/rajnishspandey/productivity.git


Here I have created a project and it's in my local I want to create a new repository on github and push it from my Terminal

git init

in case you want to remove the git initialised you can run below command and do git init again to add.

rm -rf git

git add .

git commit -m 'Initial Commit'

  • I created a repository called productivity on github and will link it with my local/remote git

git remote set-url origin https://github.com/rajnishspandey/productivity.git

git push -u origin master

  • now let's build the app and copy all the files of our application to our container > docker build -t productivity-app .

build

command to check how many images we have in docker
run docker images in Terminal

we can see now new images is created in the docker

Docker New Images

Now we have to run it through container

Click on run and configure the details

images port assignment

  • click on ports 5500:5000 running container

it will redirect you to the browser and you should see the app running

This UI can be different as it's possible that the code is updated
output

Docker Command list from official site

Learn how to

- Share docker image on docker hub

- Deploy Flask app using docker Compose

"Happy Learning"

Buy me a coffee

some useful docker commands

  • docker images to check all the images
  • docker build -t <new-image-name>-app . to build an images from your application
  • docker image rm <image-name> - to delete image which is not in use
  • docker run -it --name <new_container> <base-image> /bin/bash to create a new container and run it from base image. (here above we had python as base image)
  • docker image rm <image-name> -f delete image which is in use forcefully
  • docker ps -a to see all the containers running
  • docker container rm <container-name> to delete container which is not running
  • docker container rm <container-name> -f to delete container forcefully which is running
  • docker system prune -a to delete all containers, images and caches.
. . . .
Terabox Video Player