{
    "apps": {
        "Wordpress": ["Wordpress", "MySQL-v5", "phpMyAdmin"],
        "Joomla": ["Joomla", "MySQL-v5", "phpMyAdmin"],
        "Drupal": ["Drupal", "MySQL-v5", "phpMyAdmin"],
        "Ghost": ["Ghost"],
        "Strapi": ["Strapi", "MongoDB"]
    },
    "langages": {
        "Node.js": [],
        "PHP": [],
        "Static files (with nginx)": [],
        "Static files (with Apache2)": []
    },
    "databases": {
        "MySQL-v8": ["phpMyAdmin"],
        "MySQL-v5": ["phpMyAdmin"],
        "MariaDB": ["phpMyAdmin"],
        "PostgreSQL": ["pgAdmin"],
        "MongoDB": ["MongoExpress"],
        "CouchDB": []
    },
    "tools": ["Redis", "MailCatcher"],
    "services": {
        "Wordpress": {
            "name": "wordpress",
            "documentation": "Wordpress.md",
            "service": {
                "image": "wordpress",
                "restart": "unless-stopped",
                "volumes": ["./wp-content:/var/www/html/wp-content"],
                "depends_on": ["mysql"],
                "ports": ["80:80"],
                "environment": {
                    "WORDPRESS_DB_PASSWORD": "root"
                }
            },
            "folders": ["./wp-content"]
        },
        "Drupal": {
            "name": "drupal",
            "documentation": "Drupal.md",
            "service": {
                "image": "drupal",
                "restart": "unless-stopped",
                "volumes": [
                    "./data/drupal/modules:/var/www/html/modules",
                    "./data/drupal/profiles:/var/www/html/profiles",
                    "./data/drupal/sites:/var/www/html/sites",
                    "./data/drupal/themes:/var/www/html/themes"
                ],
                "depends_on": ["mysql"],
                "ports": ["80:80"],
                "environment": {
                    "MYSQL_USER": "root",
                    "MYSQL_PASSWORD": "root"
                }
            },
            "folders": ["./data/drupal/sites"],
            "commands": [
                "docker run --rm drupal tar -cC /var/www/html/sites . | tar -xC ./data/drupal/sites"
            ]
        },
        "Joomla": {
            "name": "joomla",
            "documentation": "Joomla.md",
            "service": {
                "image": "joomla",
                "restart": "unless-stopped",
                "volumes": ["./data/joomla:/var/www/html"],
                "depends_on": ["mysql"],
                "ports": ["80:80"],
                "environment": {
                    "JOOMLA_DB_HOST": "mysql:3306",
                    "JOOMLA_DB_PASSWORD": "root"
                }
            },
            "folders": ["./data/joomla"]
        },
        "Ghost": {
            "name": "ghost",
            "documentation": "Ghost.md",
            "service": {
                "image": "ghost",
                "volumes": ["./data/ghost:/var/lib/ghost/content"],
                "ports": ["80:2368"],
                "environment": {
                    "url": "http://localhost"
                }
            },
            "folders": ["./data/ghost"]
        },
        "Strapi": {
            "name": "strapi",
            "documentation": "Strapi.md",
            "service": {
                "image": "strapi/strapi",
                "restart": "unless-stopped",
                "volumes": ["./data/strapi-app:/usr/src/api/strapi-app"],
                "depends_on": ["mongo"],
                "ports": ["1337:1337"],
                "environment": {
                    "APP_NAME": "strapi-app",
                    "DATABASE_CLIENT": "mongo",
                    "DATABASE_HOST": "mongo",
                    "DATABASE_PORT": "27017",
                    "DATABASE_NAME": "strapi",
                    "DATABASE_USERNAME": "dev",
                    "DATABASE_PASSWORD": "dev"
                }
            },
            "folders": ["./data/strapi-app"]
        },
        "PHP": {
            "name": "php",
            "documentation": "PHP.md",
            "service": {
                "image": "becodeorg/php",
                "volumes": ["./src:/var/www/html"],
                "ports": ["80:80"]
            },
            "folders": ["./src"]
        },
        "Node.js": {
            "name": "node",
            "documentation": "Node.js.md",
            "service": {
                "image": "becodeorg/node",
                "environment": {
                    "NODE_ENV": "development"
                },
                "volumes": [
                    "./package.json:/src/app/package.json",
                    "./node_modules:/src/app/node_modules",
                    "./bin:/src/app/bin"
                ],
                "expose": ["12345", "9229"],
                "ports": ["80:12345", "9229"],
                "command": "nodemon --inspect=0.0.0.0:9229 --watch bin"
            },
            "folders": ["./bin"]
        },
        "Static files (with nginx)": {
            "name": "nginx",
            "documentation": "nginx.md",
            "service": {
                "image": "nginx",
                "volumes": ["./static:/usr/share/nginx/html"],
                "ports": ["80:80"]
            },
            "folders": ["./static"]
        },
        "Static files (with Apache2)": {
            "name": "apache2",
            "documentation": "apache2.md",
            "service": {
                "image": "httpd",
                "volumes": ["./static:/usr/local/apache2/htdocs"],
                "ports": ["80:80"]
            },
            "folders": ["./static"]
        },
        "MariaDB": {
            "name": "mysql",
            "documentation": "MariaDB.md",
            "service": {
                "image": "mariadb",
                "restart": "unless-stopped",
                "volumes": ["mysql_db:/var/lib/mysql"],
                "ports": ["3306:3306", "33060:33060"],
                "environment": {
                    "MYSQL_ROOT_PASSWORD": "root"
                }
            },
            "volumes": ["mysql_db"]
        },
        "MySQL-v8": {
            "name": "mysql",
            "documentation": "MySQL-v8.md",
            "service": {
                "image": "mysql",
                "restart": "unless-stopped",
                "volumes": ["mysql_db:/var/lib/mysql"],
                "ports": ["3306:3306", "33060:33060"],
                "environment": {
                    "MYSQL_ROOT_PASSWORD": "root"
                }
            },
            "volumes": ["mysql_db"]
        },
        "MySQL-v5": {
            "name": "mysql",
            "documentation": "MySQL-v5.md",
            "service": {
                "image": "mysql:5",
                "restart": "unless-stopped",
                "volumes": ["mysql_db:/var/lib/mysql"],
                "ports": ["3306:3306", "33060:33060"],
                "environment": {
                    "MYSQL_ROOT_PASSWORD": "root"
                }
            },
            "volumes": ["mysql_db"]
        },
        "phpMyAdmin": {
            "name": "phpmyadmin",
            "documentation": "phpMyAdmin.md",
            "service": {
                "image": "phpmyadmin/phpmyadmin",
                "ports": ["8001:80"],
                "depends_on": ["mysql"],
                "environment": {
                    "PMA_HOST": "mysql",
                    "PMA_USER": "root",
                    "PMA_PASSWORD": "root"
                }
            }
        },
        "PostgreSQL": {
            "name": "postgres",
            "documentation": "PostgreSQL.md",
            "service": {
                "image": "postgres",
                "restart": "unless-stopped",
                "ports": ["5432:5432"],
                "volumes": ["postgres_db:/var/lib/postgresql/data"],
                "environment": {
                    "POSTGRES_USER": "dev",
                    "POSTGRES_PASSWORD": "dev"
                }
            },
            "volumes": ["postgres_db"]
        },
        "pgAdmin": {
            "name": "pgadmin",
            "documentation": "pgAdmin.md",
            "service": {
                "image": "dpage/pgadmin4",
                "ports": ["8002:80"],
                "depends_on": ["postgres"],
                "environment": {
                    "PGADMIN_DEFAULT_EMAIL": "dev@dev.com",
                    "PGADMIN_DEFAULT_PASSWORD": "dev"
                }
            }
        },
        "MongoDB": {
            "name": "mongo",
            "documentation": "MongoDB.md",
            "service": {
                "image": "mongo",
                "restart": "unless-stopped",
                "ports": ["27017:27017"],
                "volumes": ["mongo_db:/data/db"],
                "environment": {
                    "MONGO_INITDB_ROOT_USERNAME": "dev",
                    "MONGO_INITDB_ROOT_PASSWORD": "dev"
                }
            },
            "volumes": ["mongo_db"]
        },
        "MongoExpress": {
            "name": "mongoexpress",
            "documentation": "MongoExpress.md",
            "service": {
                "image": "mongo-express",
                "ports": ["8003:8081"],
                "depends_on": ["mongo"],
                "environment": {
                    "ME_CONFIG_MONGODB_SERVER": "mongo",
                    "ME_CONFIG_MONGODB_ADMINUSERNAME": "dev",
                    "ME_CONFIG_MONGODB_ADMINPASSWORD": "dev"
                }
            }
        },
        "CouchDB": {
            "name": "couchdb",
            "documentation": "CouchDB.md",
            "service": {
                "image": "couchdb",
                "restart": "unless-stopped",
                "ports": ["5984:5984"],
                "volumes": ["couchdb:/opt/couchdb/data"],
                "environment": {
                    "COUCHDB_USER": "dev",
                    "COUCHDB_PASSWORD": "dev"
                }
            },
            "volumes": ["couchdb"]
        },
        "Redis": {
            "name": "redis",
            "documentation": "Redis.md",
            "service": {
                "image": "redis",
                "ports": ["6379:6379"]
            }
        },
        "MailCatcher": {
            "name": "mailcatcher",
            "documentation": "MailCatcher.md",
            "service": {
                "image": "tophfr/mailcatcher",
                "ports": ["8004:80"]
            }
        }
    }
}
