{ "type": "object", "description": "AIO containers definition schema", "minProperties": 1, "required": ["aio_services_v1"], "properties": { "aio_services_v1": { "type": "array", "items": { "type": "object", "additionalProperties": false, "minProperties": 2, "required": ["image", "container_name"], "properties": { "image": { "type": "string", "minLength": 1 }, "expose": { "type": "array", "items": { "type": "string", "pattern": "^([0-9]{1,5})$" } }, "cap_add": { "type": "array", "items": { "type": "string", "pattern": "^[A-Z_]+$" } }, "depends_on": { "type": "array", "items": { "type": "string", "pattern": "^nextcloud-aio-[a-z-]+$" } }, "display_name": { "type": "string", "pattern": "^[A-Za-z ]+$" }, "environment": { "type": "array", "items": { "type": "string", "pattern": "^.*=.*$", "minlength": 1 } }, "container_name": { "type": "string", "pattern": "^nextcloud-aio-[a-z-]+$" }, "internal_port": { "type": "string", "pattern": "^(([0-9]{1,5})|host|(%[A-Z_]+%))$" }, "stop_grace_period": { "type": "integer" }, "ports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "minProperties": 3, "properties": { "ip_binding": { "type": "string", "pattern": "^(%[A-Z_]+%)?$" }, "port_number": { "type": "string", "pattern": "^(%[A-Z_]+%)$" }, "protocol": { "type": "string", "pattern": "^(tcp|udp)$" } } } }, "restart": { "type": "string", "pattern": "^unless-stopped$" }, "shm_size": { "type": "integer" }, "secrets": { "type": "array", "items": { "type": "string", "pattern": "^[A-Z_]+$" } }, "devices": { "type": "array", "items": { "type": "string", "pattern": "^/dev/[a-z]+$" } }, "apparmor_unconfined": { "type": "boolean" }, "backup_volumes": { "type": "array", "items": { "type": "string", "pattern": "^nextcloud_aio_[a-z_]+$" } }, "nextcloud_exec_commands": { "type": "array", "items": { "type": "string", "pattern": "^(php /var/www/html/occ .*|echo .*)$" } }, "profiles": { "type": "array", "items": { "type": "string", "pattern": "^[a-z-]+$" } }, "networks": { "type": "array", "items": { "type": "string", "pattern": "^nextcloud-aio$" } }, "read_only": { "type": "boolean" }, "tmpfs": { "type": "array", "items": { "type": "string", "pattern": "^/[a-z/_0-9-]+$" } }, "volumes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "minProperties": 3, "properties": { "destination": { "type": "string", "pattern": "^((/[a-z_/.-]+)|(%[A-Z_]+%))$" }, "source": { "type": "string", "pattern": "^((nextcloud_aio_[a-z_]+)|(%[A-Z_]+%))$" }, "writeable": { "type": "boolean" } } } } } } } } }