Docker
Purpose
This page documents how Docker is used in Maqsafy to run application services, isolate dependencies, and manage service deployment.
Docker Responsibilities
Docker may be used for:
- Running backend services
- Running frontend services
- Running dashboard services
- Running Redis
- Running queue workers
- Managing service networks
- Reviewing service logs
- Restarting services safely
Common Services
| Service | Purpose |
|---|---|
| backend / api | Laravel API service |
| frontend | Nuxt frontend service |
| dashboard | Dashboard service |
| redis | Cache and queue backend |
| queue-worker | Background job processor |
| nginx | Reverse proxy, if containerized |
Common Commands
List running containers:
docker ps
List all containers:
docker ps -a
View logs:
docker logs <container-name>
Follow logs:
docker logs -f <container-name>
Restart a container:
docker restart <container-name>
Inspect container details:
docker inspect <container-name>
Docker Compose Commands
Start services:
docker compose up -d
Stop services:
docker compose down
Restart services:
docker compose restart
View service logs:
docker compose logs -f
Rebuild services:
docker compose build
docker compose up -d
Docker Networks
Docker networks allow containers to communicate with each other using service names.
Useful commands:
docker network ls
docker network inspect <network-name>
Common Issues
Container Is Not Running
Check:
docker ps -a
docker logs <container-name>
Possible causes:
- Application error on startup
- Missing environment variable
- Port conflict
- Database or Redis dependency unavailable
Service Cannot Reach Redis
Check:
docker network inspect <network-name>
docker logs <redis-container>
Possible causes:
- Redis container is stopped
- Wrong Redis service name
- Containers are not on the same Docker network
Port Conflict
Check:
lsof -i :<port>
docker ps
Possible causes:
- Another service is already using the same port
- Docker port mapping is duplicated
- Nginx or local development server conflicts with the container
Deployment Notes
Before restarting containers in production:
- Confirm backup availability.
- Confirm there is a rollback plan.
- Confirm the deployment window.
- Confirm logs are monitored after restart.
Security Rules
- Do not store secrets directly inside Dockerfiles.
- Do not commit production
.envfiles. - Do not expose internal services publicly.
- Do not expose Redis or database ports to the internet.
- Use placeholders when documenting container names, ports, and credentials.