New alpha release: Clientverse 1.0.1-alpha.1 Is AvailableRead the post

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: