Docker

Pull and run Clientverse using the official Docker image from Docker Hub. The image is built on PHP 8.2 with Apache and is designed to run the Laravel-based Clientverse application out of the box.

Prerequisites

  • Docker (v20.10 or newer recommended)
  • Docker Compose (v2.0 or newer, for Compose setup)
  • At least 1 GB of free disk space for images and volumes

Quick Start

Start a MySQL instance and then pull and run the Clientverse container:

# Start a MySQL instance
docker run -d --name clientverse-db \
  -e MYSQL_ROOT_PASSWORD=secret \
  -e MYSQL_DATABASE=clientverse \
  mysql:8.0

# Pull and run the app
docker run -d --name clientverse-app \
  --link clientverse-db:db \
  -p 80:80 \
  -e APP_URL=http://localhost \
  -e DB_HOST=db \
  -e DB_DATABASE=clientverse \
  -e DB_USERNAME=root \
  -e DB_PASSWORD=secret \
  alextselegidis/clientverse:latest

Once the containers are running, open http://localhost in your browser.

Docker Compose

You can use the following docker-compose.yml file to set up Clientverse with a MySQL database:

services:
  clientverse:
    image: alextselegidis/clientverse:latest
    restart: always
    ports:
      - '80:80'
    environment:
      - APP_NAME=Clientverse
      - APP_ENV=production
      - APP_DEBUG=false
      - APP_URL=http://localhost
      - DB_CONNECTION=mysql
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_DATABASE=clientverse
      - DB_USERNAME=root
      - DB_PASSWORD=secret
      - MAIL_MAILER=smtp
      - MAIL_HOST=smtp.example.org
      - MAIL_PORT=587
      - MAIL_USERNAME=
      - MAIL_PASSWORD=
      - MAIL_ENCRYPTION=tls
      - MAIL_FROM_ADDRESS=info@example.org
      - MAIL_FROM_NAME=Clientverse
    volumes:
      - clientverse-storage:/var/www/html/storage

  mysql:
    image: mysql:8.0
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=clientverse
    volumes:
      - mysql:/var/lib/mysql

volumes:
  clientverse-storage:
  mysql:

Start everything with:

docker compose up -d

Environment Variables

The Docker image uses standard Laravel environment variables. All variables are passed through to the .env file that is generated on container startup.

Application

VariableDefaultDescription
APP_NAMEClientverseApplication name
APP_ENVproductionApplication environment (production, local, testing)
APP_KEY(auto-generated)Encryption key. Auto-generated on first start if left empty
APP_DEBUGfalseEnable debug mode (true / false)
APP_URLhttp://localhostThe public URL of the application

Logging

VariableDefaultDescription
LOG_CHANNELstackLaravel log channel (stack, single, daily, stderr, etc.)
LOG_LEVELerrorMinimum log level (debug, info, notice, warning, error, critical)

Database

VariableDefaultDescription
DB_CONNECTIONmysqlDatabase driver (mysql, pgsql, sqlite)
DB_HOSTdbDatabase hostname
DB_PORT3306Database port
DB_DATABASEclientverseDatabase name
DB_USERNAMErootDatabase username
DB_PASSWORDsecretDatabase password

Cache & Session

VariableDefaultDescription
CACHE_DRIVERfileCache driver (file, redis, memcached, database)
SESSION_DRIVERfileSession driver (file, redis, database, cookie)
SESSION_LIFETIME120Session lifetime in minutes
QUEUE_CONNECTIONsyncQueue connection (sync, redis, database)
BROADCAST_DRIVERlogBroadcast driver (log, redis, pusher)
FILESYSTEM_DISKlocalDefault filesystem disk

Redis

VariableDefaultDescription
REDIS_HOST127.0.0.1Redis hostname
REDIS_PASSWORDnullRedis password
REDIS_PORT6379Redis port

Mail

VariableDefaultDescription
MAIL_MAILERsmtpMail driver (smtp, sendmail, mailgun, ses, log)
MAIL_HOSTmailpitSMTP hostname
MAIL_PORT1025SMTP port
MAIL_USERNAMEnullSMTP username
MAIL_PASSWORDnullSMTP password
MAIL_ENCRYPTIONnullSMTP encryption (tls, ssl, or null)
MAIL_FROM_ADDRESShello@example.comSender email address
MAIL_FROM_NAMEClientverseSender name

Startup Behavior

On every container start the entrypoint script will:

  1. Generate the Laravel .env file from the Docker environment variables.
  2. Set correct permissions on storage/ and bootstrap/cache/.
  3. Auto-generate an APP_KEY if one was not provided.
  4. Run php artisan migrate --force to apply pending database migrations.
  5. Create the storage:link symbolic link.
  6. Cache configuration, routes, and views for performance.
  7. Start the Apache web server.

Need Help?

If you run into issues with Docker: