Skip to main content

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

ServicePurpose
backend / apiLaravel API service
frontendNuxt frontend service
dashboardDashboard service
redisCache and queue backend
queue-workerBackground job processor
nginxReverse 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 .env files.
  • 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.