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
| Variable | Default | Description |
|---|---|---|
APP_NAME | Clientverse | Application name |
APP_ENV | production | Application environment (production, local, testing) |
APP_KEY | (auto-generated) | Encryption key. Auto-generated on first start if left empty |
APP_DEBUG | false | Enable debug mode (true / false) |
APP_URL | http://localhost | The public URL of the application |
Logging
| Variable | Default | Description |
|---|---|---|
LOG_CHANNEL | stack | Laravel log channel (stack, single, daily, stderr, etc.) |
LOG_LEVEL | error | Minimum log level (debug, info, notice, warning, error, critical) |
Database
| Variable | Default | Description |
|---|---|---|
DB_CONNECTION | mysql | Database driver (mysql, pgsql, sqlite) |
DB_HOST | db | Database hostname |
DB_PORT | 3306 | Database port |
DB_DATABASE | clientverse | Database name |
DB_USERNAME | root | Database username |
DB_PASSWORD | secret | Database password |
Cache & Session
| Variable | Default | Description |
|---|---|---|
CACHE_DRIVER | file | Cache driver (file, redis, memcached, database) |
SESSION_DRIVER | file | Session driver (file, redis, database, cookie) |
SESSION_LIFETIME | 120 | Session lifetime in minutes |
QUEUE_CONNECTION | sync | Queue connection (sync, redis, database) |
BROADCAST_DRIVER | log | Broadcast driver (log, redis, pusher) |
FILESYSTEM_DISK | local | Default filesystem disk |
Redis
| Variable | Default | Description |
|---|---|---|
REDIS_HOST | 127.0.0.1 | Redis hostname |
REDIS_PASSWORD | null | Redis password |
REDIS_PORT | 6379 | Redis port |
| Variable | Default | Description |
|---|---|---|
MAIL_MAILER | smtp | Mail driver (smtp, sendmail, mailgun, ses, log) |
MAIL_HOST | mailpit | SMTP hostname |
MAIL_PORT | 1025 | SMTP port |
MAIL_USERNAME | null | SMTP username |
MAIL_PASSWORD | null | SMTP password |
MAIL_ENCRYPTION | null | SMTP encryption (tls, ssl, or null) |
MAIL_FROM_ADDRESS | hello@example.com | Sender email address |
MAIL_FROM_NAME | Clientverse | Sender name |
Startup Behavior
On every container start the entrypoint script will:
- Generate the Laravel
.envfile from the Docker environment variables. - Set correct permissions on
storage/andbootstrap/cache/. - Auto-generate an
APP_KEYif one was not provided. - Run
php artisan migrate --forceto apply pending database migrations. - Create the
storage:linksymbolic link. - Cache configuration, routes, and views for performance.
- Start the Apache web server.
Need Help?
If you run into issues with Docker:
- Check the Troubleshooting guide
- Ask in our Discord community
- Open an issue on GitHub