service add
To add a service to an enclave, run:
kurtosis service add $THE_ENCLAVE_IDENTIFIER $THE_SERVICE_IDENTIFIER $CONTAINER_IMAGE
where $THE_ENCLAVE_IDENTIFIER and the $THE_SERVICE_IDENTIFIER are resource identifiers for the enclave and service, respectively.
Note, the service identifier needs to be formatted according to RFC 1035. Specifically, 1-63 lowercase alphanumeric characters with dashes and cannot start or end with dashes. Also service names
have to start with a lowercase alphabet.
Much like docker run, this command has multiple options available to customize the service that's started:
- The
--cmdflag can be used to override the default command that the container runs - The
--entrypointflag can be passed in to override the binary the service runs - The
--envflag can be used to specify a set of environment variables that should be set when running the service - The
--portsflag can be used to set the ports that the service will listen on
To override the service's CMD, add a -- after the image name and then pass in your CMD args like so:
kurtosis service add --entrypoint sh my-enclave test-service alpine -- -c "echo 'Hello world'"
Alternatively, if you have an existing service config in JSON format (for example, one that was output using kurtosis service inspect), you can use the --json-service-config flag to add a service using that config:
kurtosis service add my-enclave test-service --json-service-config ./my-service-config.json
To read the JSON config from stdin, use:
kurtosis service add my-enclave test-service --json-service-config - < ./my-service-config.json
When using --json-service-config, the standard flags and args like --image, --cmd, --entrypoint, --env, and $CONTAINER_IMAGE will be ignored in favor of the provided config.