created docker application
This commit is contained in:
commit
5380e26a33
64
README.md
Normal file
64
README.md
Normal file
@ -0,0 +1,64 @@
|
||||
# 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.
|
||||
|
32
docker-compose.yaml
Normal file
32
docker-compose.yaml
Normal file
@ -0,0 +1,32 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
web:
|
||||
image: nginx:latest
|
||||
ports:
|
||||
- "8080:80"
|
||||
networks:
|
||||
- myapp-net
|
||||
restart: on-failure
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: mysql:5.7
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: example
|
||||
MYSQL_DATABASE: appdb
|
||||
volumes:
|
||||
- mysql-data:/var/lib/mysql
|
||||
networks:
|
||||
- myapp-net
|
||||
restart: on-failure
|
||||
|
||||
networks:
|
||||
myapp-net:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
mysql-data:
|
||||
external: true
|
||||
|
20
prepare-app.sh
Executable file
20
prepare-app.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
# prepare-app.sh
|
||||
|
||||
if ! docker network ls | grep -w myapp-net >/dev/null; then
|
||||
docker network create myapp-net
|
||||
echo "Created Docker network: myapp-net"
|
||||
else
|
||||
echo "Docker network myapp-net already exists."
|
||||
fi
|
||||
|
||||
|
||||
if ! docker volume ls | grep -w mysql-data >/dev/null; then
|
||||
docker volume create mysql-data
|
||||
echo "Created Docker volume: mysql-data"
|
||||
else
|
||||
echo "Docker volume mysql-data already exists."
|
||||
fi
|
||||
|
||||
echo "Preparation complete."
|
||||
|
10
remove-app.sh
Executable file
10
remove-app.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
# remove-app.sh
|
||||
|
||||
docker-compose down
|
||||
|
||||
docker volume rm mysql-data
|
||||
docker network rm myapp-net
|
||||
|
||||
echo "All application resources removed."
|
||||
|
9
start-app.sh
Executable file
9
start-app.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
# start-app.sh
|
||||
|
||||
docker-compose up -d
|
||||
|
||||
sleep 5
|
||||
|
||||
echo "Application started. Access the web service at http://localhost:8080"
|
||||
|
6
stop-app.sh
Executable file
6
stop-app.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
# stop-app.sh
|
||||
|
||||
docker-compose stop
|
||||
echo "Application services stopped. Persistent data remains intact."
|
||||
|
Loading…
Reference in New Issue
Block a user