======================== Custom Container Service ======================== The orchestrator enables custom containers to be deployed using a YAML file. A corresponding :ref:`orchestrator-cli-service-spec` must look like: .. code-block:: yaml service_type: container service_id: foo placement: ... spec: image: docker.io/library/foo:latest entrypoint: /usr/bin/foo uid: 1000 gid: 1000 args: - "--net=host" - "--cpus=2" ports: - 8080 - 8443 envs: - SECRET=mypassword - PORT=8080 - PUID=1000 - PGID=1000 volume_mounts: CONFIG_DIR: /etc/foo bind_mounts: - ['type=bind', 'source=lib/modules', 'destination=/lib/modules', 'ro=true'] dirs: - CONFIG_DIR files: CONFIG_DIR/foo.conf: - refresh=true - username=xyz - "port: 1234" where the properties of a service specification are: * ``service_id`` A unique name of the service. * ``image`` The name of the Docker image. * ``uid`` The UID to use when creating directories and files in the host system. * ``gid`` The GID to use when creating directories and files in the host system. * ``entrypoint`` Overwrite the default ENTRYPOINT of the image. * ``args`` A list of additional Podman/Docker command line arguments. * ``ports`` A list of TCP ports to open in the host firewall. * ``envs`` A list of environment variables. * ``bind_mounts`` When you use a bind mount, a file or directory on the host machine is mounted into the container. Relative `source=...` paths will be located below `/var/lib/ceph//`. * ``volume_mounts`` When you use a volume mount, a new directory is created within Docker’s storage directory on the host machine, and Docker manages that directory’s contents. Relative source paths will be located below `/var/lib/ceph//`. * ``dirs`` A list of directories that are created below `/var/lib/ceph//`. * ``files`` A dictionary, where the key is the relative path of the file and the value the file content. The content must be double quoted when using a string. Use '\\n' for line breaks in that case. Otherwise define multi-line content as list of strings. The given files will be created below the directory `/var/lib/ceph//`. The absolute path of the directory where the file will be created must exist. Use the `dirs` property to create them if necessary.