zkt25/README.md

2.1 KiB

Docker Web Application Deployment

The application consists of two services:

  1. Web Service (Nginx):
    • Uses the official Nginx image.
    • Listens on port 80 inside the container and is mapped to host port 8080.
  2. Database Service (MySQL 5.7):
    • Uses the official MySQL 5.7 image.
    • Configured with a root password and a default database.
    • Persists its data using the named volume mysql-data.

Files Overview

  • prepare-app.sh:
    • Creates the required Docker network (myapp-net) and persistent volume (mysql-data).
  • docker-compose.yaml:
    • Defines the two services along with their ports, environment variables, volumes, and restart policies.
  • start-app.sh:
    • Starts the services using Docker Compose in detached mode.
    • Displays the URL to access the web service.
  • stop-app.sh:
    • Stops the running containers without deleting the persistent volume.
  • remove-app.sh:
    • Removes all the created resources (containers, network, and volume) from the deployment.

Deployment Instructions

  1. Preparation:

    • Ensure Docker and Docker Compose are installed.
    • Make the scripts executable:
      chmod +x prepare-app.sh start-app.sh stop-app.sh remove-app.sh
      
    • Run the preparation script:
      ./prepare-app.sh
      
  2. Starting the Application:

    • Launch the services by running:
      ./start-app.sh
      
    • Open your web browser and navigate to http://localhost:8080 to see the Nginx welcome page.
  3. Stopping the Application:

    • Stop the services without losing data:
      ./stop-app.sh
      
  4. Removing the Application:

    • To completely remove all deployed resources, run:
      ./remove-app.sh
      

Notes

  • The application uses an external network (myapp-net) and a persistent volume (mysql-data) that are created in prepare-app.sh.
  • The Nginx container depends on the MySQL container to demonstrate inter-service communication within the myapp-net network.
  • Containers are configured to restart on failure.