This document explains how to set up, build, run, and manage the Inception project from a developer perspective. It also describes how data is stored and persists across container restarts.
Before starting, make sure you have:
- Docker installed and running
- Docker Compose installed
- Make installed
Check installation:
docker --version
docker compose version
make --versiongit clone <your_repository_url>
cd InceptionEdit the file:
srcs/.envThis file contains:
- Database name
- WordPress configuration
- Domain name
- FTP username
Secrets are stored in:
secrets/Files include:
- db_password.txt
- db_root_password.txt
- wp_admin_password.txt
- wp_user_password.txt
- ftp_password.txt
These are used by Docker Compose and should not be committed to version control.
makeThis will:
- Build Docker images
- Start containers
- Create networks and volumes
make downmake redocker psdocker exec -it <container_name> bashExample:
docker exec -it wordpress bashdocker logs <container_name>docker restart <container_name>The project uses Docker volumes with bind mounts:
- MariaDB data:
/home/mgarouj/data/mariadb- WordPress data:
/home/mgarouj/data/wordpress- Data is stored on the host machine
- Containers can be stopped or removed without losing data
- When containers restart, they reuse existing data
docker volume lsdocker volume inspect <volume_name>- All containers are connected through a custom Docker bridge network
- Services communicate using container names (e.g.,
mariadb,wordpress,redis) - External access is only exposed through defined ports (443, 8080, 8081, 8082)
- Do not store sensitive data inside Docker images
- Always use
.dockerignoreto exclude.envand secrets - Use Docker secrets for passwords
- Ensure correct permissions for mounted volumes
docker logs <container_name>Check and stop conflicting services:
sudo lsof -i :443make fclean
make