zkt25/assignment1/README.md
2025-05-11 00:01:27 +02:00

65 lines
2.1 KiB
Markdown

# 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:
```bash
chmod +x prepare-app.sh start-app.sh stop-app.sh remove-app.sh
```
- Run the preparation script:
```bash
./prepare-app.sh
```
2. **Starting the Application:**
- Launch the services by running:
```bash
./start-app.sh
```
- Open your web browser and navigate to [http://localhost:8080](http://localhost:8080) to see the Nginx welcome page.
3. **Stopping the Application:**
- Stop the services without losing data:
```bash
./stop-app.sh
```
4. **Removing the Application:**
- To completely remove all deployed resources, run:
```bash
./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.