121 lines
4.2 KiB
JSON
121 lines
4.2 KiB
JSON
{
|
|
"services": [
|
|
{
|
|
"name": "sandbox-certs",
|
|
"image": "n8nio/n8n-sandbox-service-api:1.3.0",
|
|
"command": [
|
|
"bootstrap-mtls.sh --out-dir /tls --api-san sandbox-api --control-san-prefix sandbox-runner && chown -R sandbox-api:sandbox-api /tls/api /var/lib/n8n-sandbox-api\n"
|
|
],
|
|
"entrypoint": [
|
|
"sh",
|
|
"-c"
|
|
],
|
|
"environment": {
|
|
"NUM_RUNNERS": "1"
|
|
},
|
|
"user": "0:0",
|
|
"volumes": [
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/tls",
|
|
"containerPath": "/tls"
|
|
},
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/api",
|
|
"containerPath": "/var/lib/n8n-sandbox-api"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "sandbox-api",
|
|
"image": "n8nio/n8n-sandbox-service-api:1.3.0",
|
|
"isMain": true,
|
|
"internalPort": 8080,
|
|
"addToMainNetwork": true,
|
|
"environment": {
|
|
"SANDBOX_API_KEYS": "${SANDBOX_API_KEYS}",
|
|
"SANDBOX_API_RUNNER_REGISTRATION_TOKEN": "${SANDBOX_REGISTRATION_TOKEN}",
|
|
"SANDBOX_API_RUNNER_API_KEY": "${SANDBOX_RUNNER_KEY}",
|
|
"SANDBOX_API_GRPC_TLS_CERT_FILE": "/tls/api/grpc-server.crt",
|
|
"SANDBOX_API_GRPC_TLS_KEY_FILE": "/tls/api/grpc-server.key",
|
|
"SANDBOX_API_GRPC_TLS_CLIENT_CA_FILE": "/tls/api/ca.crt",
|
|
"SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_CA_FILE": "/tls/api/ca.crt",
|
|
"SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_CERT_FILE": "/tls/api/control-grpc-api-client.crt",
|
|
"SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_KEY_FILE": "/tls/api/control-grpc-api-client.key",
|
|
"SANDBOX_API_RUNNER_CONTROL_GRPC_TLS_SERVER_NAME": "sandbox-runner-1"
|
|
},
|
|
"volumes": [
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/tls",
|
|
"containerPath": "/tls",
|
|
"readOnly": true
|
|
},
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/api",
|
|
"containerPath": "/var/lib/n8n-sandbox-api"
|
|
}
|
|
],
|
|
"healthCheck": {
|
|
"test": "wget -qO- http://localhost:8080/healthz",
|
|
"interval": "5s",
|
|
"timeout": "3s",
|
|
"retries": 5,
|
|
"startPeriod": "10s"
|
|
},
|
|
"dependsOn": {
|
|
"sandbox-certs": {
|
|
"condition": "service_completed_successfully"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "sandbox-runner-1",
|
|
"image": "n8nio/n8n-sandbox-service-runner-dind:1.3.0",
|
|
"environment": {
|
|
"SANDBOX_RUNNER_API_KEYS": "${SANDBOX_RUNNER_KEY}",
|
|
"SANDBOX_RUNNER_REGISTRATION_TOKEN": "${SANDBOX_REGISTRATION_TOKEN}",
|
|
"SANDBOX_RUNNER_API_GRPC_ADDR": "sandbox-api:9090",
|
|
"SANDBOX_RUNNER_HTTP_BASE_URL": "http://sandbox-runner-1:8080",
|
|
"SANDBOX_RUNNER_CONTROL_GRPC_LISTEN_ADDR": ":9091",
|
|
"SANDBOX_RUNNER_CONTROL_GRPC_ADVERTISE_ADDR": "sandbox-runner-1:9091",
|
|
"SANDBOX_RUNNER_ID": "runner-1",
|
|
"SANDBOX_RUNNER_DOCKER_SANDBOX_IMAGE": "n8nio/n8n-sandbox-service-sandbox:1.3.0",
|
|
"SANDBOX_RUNNER_REGISTRATION_GRPC_CA_FILE": "/tls/runner/ca.crt",
|
|
"SANDBOX_RUNNER_REGISTRATION_GRPC_CERT_FILE": "/tls/runner/grpc-client.crt",
|
|
"SANDBOX_RUNNER_REGISTRATION_GRPC_KEY_FILE": "/tls/runner/grpc-client.key",
|
|
"SANDBOX_RUNNER_REGISTRATION_GRPC_SERVER_NAME": "sandbox-api",
|
|
"SANDBOX_RUNNER_CONTROL_GRPC_TLS_CERT_FILE": "/tls/runner/control-grpc-server.crt",
|
|
"SANDBOX_RUNNER_CONTROL_GRPC_TLS_KEY_FILE": "/tls/runner/control-grpc-server.key",
|
|
"SANDBOX_RUNNER_CONTROL_GRPC_TLS_CLIENT_CA_FILE": "/tls/runner/ca.crt"
|
|
},
|
|
"privileged": true,
|
|
"volumes": [
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/tls",
|
|
"containerPath": "/tls",
|
|
"readOnly": true
|
|
},
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/runner-state",
|
|
"containerPath": "/var/sandboxes"
|
|
},
|
|
{
|
|
"hostPath": "${APP_DATA_DIR}/data/runner-docker",
|
|
"containerPath": "/var/lib/docker"
|
|
}
|
|
],
|
|
"healthCheck": {
|
|
"test": "wget -qO- http://localhost:8080/readyz",
|
|
"interval": "5s",
|
|
"timeout": "5s",
|
|
"retries": 24,
|
|
"startPeriod": "20s"
|
|
},
|
|
"dependsOn": {
|
|
"sandbox-api": {
|
|
"condition": "service_healthy"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|