Running Vvveb with Docker is the fastest way to get a fully configured environment without manually installing PHP, Apache, or a database server.
You can run Vvveb with SQLite for a lightweight setup or connect it to MySQL/PostgreSQL for production use.
1. Quick Start - Run Vvveb with a Single Command
To start Vvveb instantly using the official Docker image:
docker run -p 8080:80 vvveb/vvvebcms
Then open:
The installation wizard will appear automatically.
Choosing a Database
- Select SQLite if you want a simple, zero‑configuration setup.
- Choose MySQL or PostgreSQL if you plan to run a production site or need advanced features.
Docker Hub:
https://hub.docker.com/r/vvveb/vvvebcms
2. Docker Compose Example (with MySQL)
The following docker-compose.yaml file sets up:
- A MySQL database container
- A Vvveb CMS container
- Persistent volumes for data
- An internal Docker network
services:
db:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: vvveb
MYSQL_DATABASE: vvveb
MYSQL_USER: vvveb
MYSQL_PASSWORD: vvveb
volumes:
- db:/var/lib/mysql
networks:
- internal
php:
image: vvveb/vvvebcms:latest
environment:
DB_HOST: db
DB_DATABASE: vvveb
DB_USER: vvveb
DB_PASSWORD: vvveb
DB_ENGINE: mysqli # sqlite, pgsql also supported
volumes:
- vvveb-volume:/var/www/html
- db:/var/lib/mysql
ports:
- "8080:80"
links:
- db:mysql
depends_on:
- db
networks:
- internal
volumes:
vvveb-volume:
db:
networks:
internal:
driver: bridge
Start the stack
docker compose up -d
Then open:
3. Development Environment with Docker
If you're working on Vvveb’s source code, you can run the development environment directly from the project root.
Start the dev environment
sudo docker-compose up -d
Access the site
- Frontend: http://localhost:8080
- Admin panel: http://localhost:8080/admin
Auto‑install & other options
If you want to enable auto‑installation or modify environment variables:
- Open
docker-compose.yaml - Uncomment or edit the relevant configuration lines
- Rebuild or restart the containers
4. Tips & Best Practices
Persistent Storage
- The
vvveb-volumestores your Vvveb files - The
dbvolume stores your MySQL data
This ensures your site survives container restarts.
Using PostgreSQL
Set:
DB_ENGINE=pgsql
And replace the MySQL container with a PostgreSQL one.
Production Deployment
For production, consider:
- Adding HTTPS via Traefik, Caddy, or Nginx reverse proxy
- Using external volumes or bind mounts
- Running MySQL/PostgreSQL on a separate managed service