Build Flask Image using docker & docker-compose
1. Create a Dockerfile to build Flask image with Flask application, 'requirements.txt' and expose it in port 5000.
2. Create a 'docker-compose.json' file to create two services named 'python_web_app' and 'db_service'
3. The 'python_web_app' service should be built from Dockerfile and specify the port as 5000
4. the 'db_service' should be built from image 'redis:alpine'
5. Add a volume to the 'python_web_app' service that mounts the current directory to the working directory inside the container and set the flask envireonment in debug mode.
6. Visit 'http:localhost:5000" to check weather the Flask application is running fine.
The container name of 'python_web_app' service should be 'web_container' and container name of 'db_service' should be 'db_container'
Here are the instructions for each of the tasks mentioned:
Create a file named Dockerfile and add the following content:
# Base image
FROM python:3.9-slim
# Set working directory
WORKDIR /app
# Copy requirements file
COPY requirements.txt .
# Install dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY . .
# Set Flask environment variables
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
ENV FLASK_RUN_PORT=5000
ENV FLASK_ENV=development
# Expose port 5000
EXPOSE 5000
# Start Flask application
CMD ["flask", "run"]
Create a file named docker-compose.json and add the following content:
{
"version": "3",
"services": {
"python_web_app": {
"build": {
"context": ".",
"dockerfile": "Dockerfile"
},
"ports": [
"5000:5000"
],
"volumes": [
".:/app"
],
"environment": {
"FLASK_ENV": "development"
},
"container_name": "web_container"
},
"db_service": {
"image": "redis:alpine",
"container_name": "db_container"
"volumes": [
"redis-data:/data" //added to retain the data after docker-compose down
],
"ports": [
"6379:6379" //this port declaration is optional, not defined, not used locally
]
}
},
"volumes": {
"redis-data": {}
}
}
Build and run the Docker containers:
Assuming you have Docker installed and the terminal is in the same directory as the Dockerfile and docker-compose.json files, run the following commands:
# Build and run the containers in detached mode
docker-compose -f docker-compose.json up -d
Verify Flask application:
Open your web browser and visit http://localhost:5000 to check if the Flask application is running fine.
---THANK YOU---
Comments
Post a Comment