docker.recipes

October CMS

intermediate

Laravel-based CMS with a clean, simple interface.

Overview

October CMS is a modern content management system built on the Laravel PHP framework, created by Alexey Bobkov and Samuel Georges in 2014. It emphasizes simplicity and developer-friendly features, offering a clean administrative interface combined with powerful customization capabilities through its unique component-based architecture. Unlike traditional CMSs that rely heavily on themes and plugins, October CMS uses a flexible approach with pages, partials, layouts, and reusable components that can be mixed and matched to create dynamic websites. This Docker stack pairs October CMS with MySQL 8.0, leveraging Laravel's Eloquent ORM for database interactions and MySQL's InnoDB storage engine for ACID-compliant transactions. The setup takes advantage of October's built-in caching mechanisms and MySQL's query cache to deliver optimal performance for content-heavy websites. The aspendigital/octobercms image provides a pre-configured Apache environment with PHP extensions required for October's marketplace integration and file management features. Developers and agencies building custom websites, corporate portals, or content-driven applications will find this combination particularly valuable. The Laravel foundation provides familiar MVC patterns and Artisan CLI tools, while October's Twig templating engine offers designers flexibility without requiring deep PHP knowledge. This stack is ideal for teams transitioning from WordPress who need more developer control, or Laravel developers who want CMS functionality without building it from scratch.

Key Features

  • Twig templating engine with Blade template inheritance for flexible theme development
  • Component-based architecture allowing drag-and-drop page building with reusable elements
  • Laravel Eloquent ORM integration with MySQL InnoDB for complex relational data modeling
  • October Marketplace integration for one-click plugin and theme installation
  • Built-in media manager with image resizing and CDN support through Laravel filesystem
  • Ajax framework for dynamic content loading without page refreshes
  • Schema Builder for database migrations through October's version management system
  • Multi-site management capabilities with shared plugins and themes across installations

Common Use Cases

  • 1Corporate websites requiring custom content types and workflow approval processes
  • 2E-commerce sites using October's Shopaholic plugin with complex product catalogs
  • 3Portfolio and agency websites needing flexible page layouts and media galleries
  • 4Multi-lingual websites leveraging October's RainLab.Translate plugin with MySQL collation
  • 5Educational platforms requiring user registration, course management, and progress tracking
  • 6News and magazine websites with article categorization, tagging, and author management
  • 7Event management platforms with calendar integration, registration forms, and payment processing

Prerequisites

  • Docker and Docker Compose installed with at least 2GB available RAM for MySQL operations
  • Port 80 available on the host system for October CMS web interface access
  • Basic understanding of Laravel MVC patterns and Twig templating syntax
  • Familiarity with MySQL database administration for backup and optimization tasks
  • Environment file (.env) configured with secure database passwords and root credentials
  • Understanding of October CMS component lifecycle and plugin architecture

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 october:
3 image: aspendigital/octobercms:latest
4 container_name: october
5 restart: unless-stopped
6 environment:
7 DB_TYPE: mysql
8 DB_HOST: mysql
9 DB_DATABASE: october
10 DB_USERNAME: october
11 DB_PASSWORD: ${DB_PASSWORD}
12 volumes:
13 - october_data:/var/www/html
14 ports:
15 - "80:80"
16 depends_on:
17 - mysql
18 networks:
19 - october-network
20
21 mysql:
22 image: mysql:8.0
23 container_name: october-mysql
24 environment:
25 MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
26 MYSQL_DATABASE: october
27 MYSQL_USER: october
28 MYSQL_PASSWORD: ${DB_PASSWORD}
29 volumes:
30 - mysql_data:/var/lib/mysql
31 networks:
32 - october-network
33
34volumes:
35 october_data:
36 mysql_data:
37
38networks:
39 october-network:
40 driver: bridge

.env Template

.env
1DB_PASSWORD=changeme
2ROOT_PASSWORD=changeme

Usage Notes

  1. 1Docs: https://docs.octobercms.com/
  2. 2Access at http://localhost, backend at /backend
  3. 3Built on Laravel: Eloquent ORM, Blade + Twig templates
  4. 4Marketplace for plugins and themes
  5. 5Components: reusable page building blocks
  6. 6Free and paid licenses available

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

october
october:
  image: aspendigital/octobercms:latest
  container_name: october
  restart: unless-stopped
  environment:
    DB_TYPE: mysql
    DB_HOST: mysql
    DB_DATABASE: october
    DB_USERNAME: october
    DB_PASSWORD: ${DB_PASSWORD}
  volumes:
    - october_data:/var/www/html
  ports:
    - "80:80"
  depends_on:
    - mysql
  networks:
    - october-network
mysql
mysql:
  image: mysql:8.0
  container_name: october-mysql
  environment:
    MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
    MYSQL_DATABASE: october
    MYSQL_USER: october
    MYSQL_PASSWORD: ${DB_PASSWORD}
  volumes:
    - mysql_data:/var/lib/mysql
  networks:
    - october-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 october:
5 image: aspendigital/octobercms:latest
6 container_name: october
7 restart: unless-stopped
8 environment:
9 DB_TYPE: mysql
10 DB_HOST: mysql
11 DB_DATABASE: october
12 DB_USERNAME: october
13 DB_PASSWORD: ${DB_PASSWORD}
14 volumes:
15 - october_data:/var/www/html
16 ports:
17 - "80:80"
18 depends_on:
19 - mysql
20 networks:
21 - october-network
22
23 mysql:
24 image: mysql:8.0
25 container_name: october-mysql
26 environment:
27 MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
28 MYSQL_DATABASE: october
29 MYSQL_USER: october
30 MYSQL_PASSWORD: ${DB_PASSWORD}
31 volumes:
32 - mysql_data:/var/lib/mysql
33 networks:
34 - october-network
35
36volumes:
37 october_data:
38 mysql_data:
39
40networks:
41 october-network:
42 driver: bridge
43EOF
44
45# 2. Create the .env file
46cat > .env << 'EOF'
47DB_PASSWORD=changeme
48ROOT_PASSWORD=changeme
49EOF
50
51# 3. Start the services
52docker compose up -d
53
54# 4. View logs
55docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/october-cms/run | bash

Troubleshooting

  • October shows 'Database connection failed': Verify mysql container is running and DB_HOST matches service name in docker-compose
  • Backend admin panel returns 404 errors: Check .htaccess configuration and ensure Apache mod_rewrite is enabled in the container
  • Plugin installation fails with permission errors: Verify october_data volume permissions and container user has write access to /var/www/html
  • MySQL container exits with 'cannot allocate memory': Increase Docker Desktop memory limit to at least 2GB or add MySQL memory configuration
  • October marketplace shows SSL errors: Update ca-certificates in container or configure October to use local plugin installation method
  • File uploads fail or media manager not working: Check PHP upload limits and ensure storage/app directory has proper write permissions

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space