zkt25/z1
2025-03-17 23:32:14 +00:00
..
app.py Upload files to "z1" 2025-03-17 23:30:03 +00:00
docker-compose.yaml Upload files to "z1" 2025-03-17 23:30:03 +00:00
Dockerfile Upload files to "z1" 2025-03-17 23:30:03 +00:00
prepare-app.sh Upload files to "z1" 2025-03-17 23:30:03 +00:00
README.md Update z1/README.md 2025-03-17 23:32:14 +00:00
remove-app.sh Upload files to "z1" 2025-03-17 23:30:03 +00:00
start-app.sh Upload files to "z1" 2025-03-17 23:30:03 +00:00
stop-app.sh Upload files to "z1" 2025-03-17 23:30:03 +00:00

Docker Web Application

Overview

This is a Dockerized web application consisting of two services:

  • Web Service: A simple Python Flask application serving HTTP endpoints.
  • Database Service: A MySQL 8.0 database that stores its data in a persistent volume.

The web service demonstrates basic functionality and includes an endpoint (/dbtest) to test connectivity with the database service.

Deployment Requirements

  • Docker: Ensure Docker is installed and running.
  • Docker Compose: Version 3.8 or later is required to run the multi-container application.

Application Architecture

  • Virtual Network:
    A custom Docker network app-network is used to allow seamless communication between containers.

  • Named Volume:
    A persistent volume db_data is defined to store MySQL database data, ensuring data persistence between container restarts.

Container Configurations

  • Web Service Container:

    • Image: Custom built from the provided Dockerfile.
    • Port: Exposes port 5000.
    • Environment Variables: Set for database connectivity (e.g., MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE).
    • Restart Policy: Configured to always restart on failure.
  • Database Service Container:

    • Image: Official mysql:8.0 image.
    • Ports: Exposes port 3306.
    • Environment Variables: Defines MYSQL_ROOT_PASSWORD and MYSQL_DATABASE for initial configuration.
    • Volume: Uses named volume db_data for data persistence.
    • Restart Policy: Configured to always restart on failure.

Used Containers

  • web: The Flask-based web server.
  • db: The MySQL database server.

How to Use the Application

  1. Prepare the Application:
    Run the following command to build images and create required networks/volumes:

    ./prepare-app.sh
    
    
  2. Start the Application: Launch the containers with:

    ./start-app.sh
    
    You should see a message:
        Running app ...
        The app is available at http://localhost:5000
    
    
  3. Interact with the Application:

    • Open your web browser and go to http://localhost:5000 to view the home page. • Visit http://localhost:5000/status for the application status. • Visit http://localhost:5000/dbtest to test the database connectivity.

  4. Stop the Application: To stop all running services without removing their state:

    ./stop-app.sh
    
    
  5. Remove the Application: When you want to completely remove all containers, networks, and volumes:

    ./remove-app.sh