docker.recipes

Neos CMS

intermediate

Modern PHP CMS with inline editing and content repository.

Overview

Neos is a next-generation content management system built on the Flow PHP framework, designed from the ground up to provide true inline editing capabilities and a flexible content repository architecture. Unlike traditional CMSes that separate content editing from content presentation, Neos allows editors to modify content directly on the live page through its innovative Fusion rendering engine and node-based content structure. This modern approach eliminates the back-and-forth between preview and edit modes that plague conventional content management workflows. This stack combines Neos with MariaDB to create a robust content management platform that leverages MariaDB's enhanced storage engines and improved performance characteristics over standard MySQL. MariaDB's Aria storage engine provides crash-safe tables with better caching, while its advanced indexing capabilities handle Neos's hierarchical content repository structure more efficiently. The combination addresses the complex database requirements of Neos's node-based content architecture while maintaining compatibility with PHP applications. Content creators, digital agencies, and organizations requiring sophisticated content workflows will find this stack particularly valuable. The inline editing capabilities make Neos ideal for teams where non-technical editors need direct control over content presentation, while developers benefit from the powerful Fusion templating system and Flow framework's dependency injection and aspect-oriented programming features.

Key Features

  • True inline editing with live content manipulation directly on rendered pages
  • Content Repository with hierarchical node structure for flexible content organization
  • Fusion rendering engine providing declarative templating with prototype inheritance
  • Flow framework foundation with dependency injection and aspect-oriented programming
  • MariaDB Aria storage engine for crash-safe tables and enhanced caching performance
  • Multi-dimensional content with automatic workspace handling for drafts and publications
  • Content dimensions for multilingual and multi-variant content management
  • Eel expression language for dynamic content processing and transformations

Common Use Cases

  • 1Corporate websites requiring non-technical editors to update content without developer intervention
  • 2Digital marketing agencies managing multiple client sites with complex content workflows
  • 3Multi-brand organizations needing content dimensions for different markets and languages
  • 4Educational institutions requiring collaborative content creation with inline editing
  • 5E-commerce platforms needing flexible product content management beyond simple catalogs
  • 6Publishing companies managing editorial workflows with workspace-based content staging
  • 7Enterprise intranets where business users need direct content control with approval processes

Prerequisites

  • Minimum 1GB RAM available for MariaDB optimal performance and Neos content processing
  • Port 8080 available for Neos web interface and content delivery
  • Basic understanding of PHP application deployment and configuration management
  • Familiarity with content management concepts and editorial workflows
  • Docker and Docker Compose installed with sufficient storage for content and database volumes
  • Understanding of environment variable configuration for database credentials

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 neos:
3 image: neos/neos:latest
4 container_name: neos
5 restart: unless-stopped
6 environment:
7 NEOS_DB_HOST: mariadb
8 NEOS_DB_NAME: neos
9 NEOS_DB_USER: neos
10 NEOS_DB_PASSWORD: ${DB_PASSWORD}
11 volumes:
12 - neos_data:/data
13 ports:
14 - "8080:8080"
15 depends_on:
16 - mariadb
17 networks:
18 - neos-network
19
20 mariadb:
21 image: mariadb:11
22 container_name: neos-mariadb
23 environment:
24 MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
25 MYSQL_DATABASE: neos
26 MYSQL_USER: neos
27 MYSQL_PASSWORD: ${DB_PASSWORD}
28 volumes:
29 - mariadb_data:/var/lib/mysql
30 networks:
31 - neos-network
32
33volumes:
34 neos_data:
35 mariadb_data:
36
37networks:
38 neos-network:
39 driver: bridge

.env Template

.env
1DB_PASSWORD=changeme
2ROOT_PASSWORD=changeme

Usage Notes

  1. 1Docs: https://docs.neos.io/
  2. 2Access at http://localhost:8080, backend at /neos
  3. 3True inline editing: edit content directly on page
  4. 4Content Repository: node-based content structure
  5. 5Fusion rendering: powerful template engine
  6. 6Flow framework foundation, modern PHP 8+ architecture

Individual Services(2 services)

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

neos
neos:
  image: neos/neos:latest
  container_name: neos
  restart: unless-stopped
  environment:
    NEOS_DB_HOST: mariadb
    NEOS_DB_NAME: neos
    NEOS_DB_USER: neos
    NEOS_DB_PASSWORD: ${DB_PASSWORD}
  volumes:
    - neos_data:/data
  ports:
    - "8080:8080"
  depends_on:
    - mariadb
  networks:
    - neos-network
mariadb
mariadb:
  image: mariadb:11
  container_name: neos-mariadb
  environment:
    MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
    MYSQL_DATABASE: neos
    MYSQL_USER: neos
    MYSQL_PASSWORD: ${DB_PASSWORD}
  volumes:
    - mariadb_data:/var/lib/mysql
  networks:
    - neos-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 neos:
5 image: neos/neos:latest
6 container_name: neos
7 restart: unless-stopped
8 environment:
9 NEOS_DB_HOST: mariadb
10 NEOS_DB_NAME: neos
11 NEOS_DB_USER: neos
12 NEOS_DB_PASSWORD: ${DB_PASSWORD}
13 volumes:
14 - neos_data:/data
15 ports:
16 - "8080:8080"
17 depends_on:
18 - mariadb
19 networks:
20 - neos-network
21
22 mariadb:
23 image: mariadb:11
24 container_name: neos-mariadb
25 environment:
26 MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
27 MYSQL_DATABASE: neos
28 MYSQL_USER: neos
29 MYSQL_PASSWORD: ${DB_PASSWORD}
30 volumes:
31 - mariadb_data:/var/lib/mysql
32 networks:
33 - neos-network
34
35volumes:
36 neos_data:
37 mariadb_data:
38
39networks:
40 neos-network:
41 driver: bridge
42EOF
43
44# 2. Create the .env file
45cat > .env << 'EOF'
46DB_PASSWORD=changeme
47ROOT_PASSWORD=changeme
48EOF
49
50# 3. Start the services
51docker compose up -d
52
53# 4. View logs
54docker 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/neos-cms/run | bash

Troubleshooting

  • Neos shows database connection errors: Verify MariaDB container is fully started and NEOS_DB_* environment variables match MYSQL_* database configuration
  • Inline editing interface not loading: Check that Neos container has proper write permissions to /data volume and Flow cache can be written
  • Content Repository initialization fails: Ensure MariaDB has sufficient memory allocated and InnoDB buffer pool is properly configured for node hierarchy queries
  • Fusion rendering errors with prototypes: Verify Neos cache is cleared and Flow framework has detected all package configurations properly
  • MariaDB performance issues with content queries: Check that Aria storage engine is enabled and adjust query_cache_size for hierarchical content lookups

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

Components

neosmariadb

Tags

#neos#php#inline-editing#modern

Category

CMS & Blogging
Ad Space