Docker-based deployment for October CMS with a simple CLI interface.
# Clone the repository
git clone https://github.com/yourusername/october-docker.git
cd october-docker/october
# Set up a new site
./october-setup myapp
# Start the site
./launcher start myappYour site will be available at http://localhost
- Docker Engine 20.10+
- Docker Compose v2
october-docker/ # This repository (clone once)
├── containers/ # Site configurations
│ └── myapp.yml
├── docker/ # Docker infrastructure
│ └── web/
│ ├── Dockerfile
│ └── ...
├── launcher # CLI tool
├── october-setup # Setup wizard
└── docker-compose.base.yml
~/october-sites/myapp/ # Your site files
├── .env # Environment variables
├── .data/ # Database & Redis data
│ ├── mysql/
│ └── redis/
├── artisan # October CMS files
├── composer.json
└── ...
| Command | Description |
|---|---|
./october-setup <name> |
Create a new site configuration |
./launcher start <name> |
Start containers |
./launcher stop <name> |
Stop containers |
./launcher restart <name> |
Restart containers |
./launcher rebuild <name> |
Rebuild and restart (after Dockerfile changes) |
./launcher enter <name> |
Open shell in web container |
./launcher logs <name> |
View container logs |
./launcher status |
Show all sites and their status |
./launcher destroy <name> |
Remove containers (preserves data) |
- Xdebug enabled for debugging
- APP_DEBUG=true
- OPcache validates timestamps
- Bundled MariaDB and Redis
- Xdebug disabled
- APP_DEBUG=false
- OPcache optimized
- SSL via Let's Encrypt or custom certificates
- Option to use external database (AWS RDS) and Redis (ElastiCache)
Run multiple October sites from one installation:
./october-setup blog
./october-setup shop --port 8080
./october-setup corporate --port 8081
./launcher start blog
./launcher start shop
./launcher start corporateEach site has isolated containers and data directories.
For the best development experience, use VS Code with Dev Containers:
- Start your site:
./launcher start myapp - Open VS Code
- Install "Dev Containers" extension
- Open the site folder (
~/october-sites/myapp) - Click "Reopen in Container"
This gives you:
- Full IDE with IntelliSense
- Integrated debugging with Xdebug
- Terminal access inside the container
- Fast file access (no bind mount penalty)
To deploy from your own October CMS repository instead of a fresh install:
- During setup, select "Yes" for custom Git repository
- Enter your repository URL
- The entrypoint will clone your repo and run
composer install
Or manually set OCTOBER_REPO in your site's .env file before first start.
environment: development
site_path: ~/october-sites/myapp
http_port: 80
services:
mariadb: true
redis: trueGenerated automatically by october-setup. Contains:
- APP_KEY, APP_URL, APP_ENV
- Database credentials
- Redis configuration
- PHP: 8.3 with FPM
- Web Server: Apache with HTTP/2
- Database: MariaDB 10.11
- Cache: Redis 7
- Process Manager: Supervisor
./launcher logs myappCheck that MariaDB is healthy:
docker psThe web container waits for MariaDB to be ready before running migrations.
The container runs as www-data. If you have permission issues with mounted files:
./launcher enter myapp
chown -R www-data:www-data /var/www/html/storage./launcher destroy myapp
rm -rf ~/october-sites/myapp
./october-setup myapp
./launcher start myappMIT