Documentation
This commit is contained in:
parent
e5b5daad52
commit
481794bd50
115
z1/README.md
Normal file
115
z1/README.md
Normal file
@ -0,0 +1,115 @@
|
||||
|
||||
DOCKER APP DOCUMENTATION :
|
||||
AUTHOR : Somangsu MUkherjee
|
||||
|
||||
1. Conditions for Deployment
|
||||
|
||||
The application requires the following software:
|
||||
|
||||
- Docker (version 20 or newer)
|
||||
- Docker Compose (v2 or integrated with Docker)
|
||||
- Bash shell (for .sh scripts) or PowerShell/CMD (Windows)
|
||||
- Internet connection (to download Docker images)
|
||||
|
||||
2. Application Description
|
||||
|
||||
This is a simple multi-container web application.
|
||||
|
||||
The application allows users to:
|
||||
|
||||
Enter their name in a web interface
|
||||
Submit the name to a backend server
|
||||
Store the name in a PostgreSQL database
|
||||
Retrieve and display all stored names
|
||||
|
||||
The application demonstrates communication between multiple services using Docker.
|
||||
|
||||
3. Virtual Networks and Volumes
|
||||
Virtual Network
|
||||
|
||||
Docker Compose automatically creates a virtual network for communication between services.
|
||||
|
||||
Services communicate using service names:
|
||||
|
||||
Frontend communicates with backend (backend)
|
||||
Backend communicates with database (db)
|
||||
Named Volume
|
||||
pgdata is used for persistent database storage
|
||||
It is mounted to /var/lib/postgresql/data inside the PostgreSQL container
|
||||
This ensures that data is preserved even if containers are stopped or restarted
|
||||
|
||||
4. Container Configuration
|
||||
Frontend
|
||||
Image: nginx:latest
|
||||
Port: 8080 (mapped to container port 80)
|
||||
Volume: ./frontend mounted to /usr/share/nginx/html
|
||||
Purpose: the frontend serves static HTML and JavaScript
|
||||
|
||||
Backend
|
||||
Built from a custom Dockerfile (Node.js)
|
||||
Port: 3000
|
||||
Uses Express framework and also communicates with PostgreSQL database to send entered names to be stored
|
||||
|
||||
Database (PostgreSQL)
|
||||
Image: postgres:15
|
||||
Internal port: 5432
|
||||
Environment variables:
|
||||
POSTGRES_USER=user
|
||||
POSTGRES_PASSWORD=password
|
||||
POSTGRES_DB=mydb
|
||||
the database uses named volume pgdata for persistence which makes sure that data is not lost even after stopping or removing the container.
|
||||
Uses init.sql for initial database setup
|
||||
|
||||
Adminer
|
||||
Image: adminer
|
||||
Port: 8081
|
||||
Purpose: Web interface for managing the PostgreSQL database which stores all the data that is entered
|
||||
|
||||
5. The table below describes all the containers utilised in this assignment
|
||||
| Container | Description |
|
||||
| --------- | -------------------------------------------- |
|
||||
| frontend | Nginx web server serving the frontend |
|
||||
| backend | Node.js server handling API requests |
|
||||
| db | PostgreSQL database storing application data |
|
||||
| adminer | Web interface for managing the database |
|
||||
|
||||
|
||||
6. Application Control
|
||||
|
||||
Prepare Application:
|
||||
To prepare the application, the command ./prepare-app.sh is run in wsl which builds images and prepares the environment for execution.
|
||||
|
||||
Start Application:
|
||||
./start-app.sh is run in the wsl command line to start all the 4 cointainers in detached mode.
|
||||
|
||||
Stop Application
|
||||
to stop all the currently running containers without deleting data, ./stop-app.sh is run on wsl
|
||||
|
||||
Remove Application
|
||||
./remove-app.sh stops all containers and removes volumes, networks, and all resources.
|
||||
|
||||
7. Accessing the Application
|
||||
Main Web Application can be accessed on any browser locally running on http://localhost:8080
|
||||
|
||||
The database Interface (Adminer) can be accessed similarly at http://localhost:8081
|
||||
|
||||
Login credentials for Adminer are:
|
||||
|
||||
System: PostgreSQL
|
||||
Server: db
|
||||
Username: user
|
||||
Password: password
|
||||
Database: mydb
|
||||
|
||||
8. Used Resources
|
||||
Docker official documentation
|
||||
Docker Compose documentation
|
||||
Node.js documentation
|
||||
PostgreSQL documentation
|
||||
Nginx documentation
|
||||
|
||||
9. Use of Artificial Intelligence
|
||||
|
||||
Artificial intelligence tools such as chatGPT and Claude were used as a support tool during development for understanding docker concepts and debugging scripts. Some configuration issues were also fixed by referring to AI. All implementation, testing, and integration were performed independently.
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user