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.