Files
domnitor/domain-monitor-docker
2025-10-29 12:45:01 +02:00
..
2025-10-23 00:56:29 +03:00
2025-10-23 00:56:29 +03:00
2025-10-23 00:56:29 +03:00
2025-10-23 00:56:29 +03:00
2025-10-23 00:56:29 +03:00

Domain Monitor Docker Setup

This directory contains Docker configuration for running Domain Monitor in a containerized environment.

Quick Start

  1. Configure your environment:

    • Copy env.docker.example to .env.docker
    • Edit .env.docker and change the default passwords:
      cp env.docker.example .env.docker
      # Edit .env.docker with your real passwords
      
  2. Run the bootstrap script:

    chmod +x bootstrap.sh
    ./bootstrap.sh
    

What the bootstrap script does

The bootstrap.sh script will:

  • Clone the Domain Monitor repository from GitHub into the app/ folder (only if app/ doesn't exist or is empty)
  • Set up the application environment by creating .env file with database configuration
  • Install PHP dependencies using Composer
  • Configure proper file permissions for the web server
  • Load environment variables from .env.docker into the shell
  • Start the Docker stack (web server, database, and phpMyAdmin)

Running bootstrap multiple times

The bootstrap script is safe to run multiple times:

  • If app/ folder exists and has content, it skips the git clone
  • It will reinstall Composer dependencies (ensures they're up to date)
  • It will restart the Docker containers with --build flag
  • Your database data is preserved (stored in Docker volumes)

Environment Configuration

The bootstrap script loads environment variables from .env.docker into the shell environment, which Docker Compose then uses for variable substitution. This approach ensures that all services get the correct database credentials.

Services

After running the bootstrap script, you'll have:

Managing the Docker Stack

Starting the stack

# First time setup (clones repo, installs dependencies, starts containers)
./bootstrap.sh

# Or if you just want to start existing containers
docker compose up -d

Stopping the stack

# Stop all containers
docker compose down

# Stop and remove volumes (WARNING: This will delete your database data!)
docker compose down -v

Restarting the stack

# Restart containers (keeps data)
docker compose restart

# Rebuild and restart (if you made changes to Docker config)
docker compose up -d --build

# Full restart (stops, rebuilds, starts)
docker compose down && docker compose up -d --build

Viewing logs

# View logs for all services
docker compose logs

# View logs for specific service
docker compose logs web
docker compose logs db
docker compose logs pma

# Follow logs in real-time
docker compose logs -f

Environment Configuration

You need to create a .env.docker file with your database credentials. The script will copy env.docker.example to .env.docker if it doesn't exist, but you must edit it with real passwords before the script will work.

Required variables in .env.docker:

  • DB_DATABASE - Database name
  • DB_USERNAME - Database user
  • DB_PASSWORD - Database password
  • DB_ROOT_PASSWORD - Database root password
  • TZ - Timezone (optional, defaults to UTC)

Requirements

  • Docker and Docker Compose
  • Git
  • Internet connection (to clone the repository)

Troubleshooting

  • Make sure you're running the script from the domain-monitor-docker directory
  • Ensure Docker is running and you have permission to use it
  • Check that you've edited .env.docker with real passwords (not the example values)

Quick Reference

Common scenarios

First time setup:

cp env.docker.example .env.docker
# Edit .env.docker with real passwords
./bootstrap.sh

Daily usage:

# Start (if stopped)
docker compose up -d

# Stop
docker compose down

After making changes to the app:

# Restart to pick up changes
docker compose restart web

After making changes to Docker config:

# Rebuild containers
docker compose up -d --build

Complete reset (WARNING: deletes all data):

docker compose down -v
rm -rf app/
./bootstrap.sh