65 lines
2.1 KiB
Markdown
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.
|
|
|