diff --git a/src/argv.ts b/src/argv.ts index 07399829a..842fe3cbc 100644 --- a/src/argv.ts +++ b/src/argv.ts @@ -215,6 +215,12 @@ export class Argv { return this.map.get("privileged") ?? false; } + get device (): string | null { + const device = this.map.get("device"); + if (!device) return null; + return device; + } + get ulimit (): string | null { const ulimit = this.map.get("ulimit"); if (!ulimit) return null; diff --git a/src/index.ts b/src/index.ts index 7146c48cc..2beed489e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -217,6 +217,11 @@ process.on("SIGUSR2", async () => await cleanupJobResources(jobs)); description: "Set docker executor to privileged mode", requiresArg: false, }) + .option("device", { + type: "string", + description: "Set docker executor device option", + requiresArg: false, + }) .option("ulimit", { type: "number", description: "Set docker executor ulimit", diff --git a/src/job.ts b/src/job.ts index 6f6954830..008b8ad1c 100644 --- a/src/job.ts +++ b/src/job.ts @@ -837,6 +837,10 @@ export class Job { dockerCmd += "--privileged "; } + if (this.argv.device) { + dockerCmd += `--device=${this.argv.device} `; + } + if (this.argv.ulimit !== null) { dockerCmd += `--ulimit nofile=${this.argv.ulimit} `; } @@ -1414,6 +1418,10 @@ export class Job { dockerCmd += "--privileged "; } + if (this.argv.device) { + dockerCmd += `--device=${this.argv.device} `; + } + if (this.argv.ulimit !== null) { dockerCmd += `--ulimit nofile=${this.argv.ulimit} `; }