Skip to content

Commit dcbb438

Browse files
committed
feat(techdocs-cli): Allow passing docker extra args to @techdocs/cli serve and serve:mkdocs
Signed-off-by: Mathias Geat <[email protected]>
1 parent 92103db commit dcbb438

File tree

6 files changed

+47
-0
lines changed

6 files changed

+47
-0
lines changed

docs/features/techdocs/cli.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ Serve a documentation project locally in a Backstage app-like environment
8383
Options:
8484
-i, --docker-image <DOCKER_IMAGE> The mkdocs docker container to use (default: "spotify/techdocs")
8585
--docker-entrypoint <DOCKER_ENTRYPOINT> Override the image entrypoint
86+
--docker-option <DOCKER_OPTION...> Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12"
87+
(can be added multiple times).
8688
--no-docker Do not use Docker, use MkDocs executable in current user environment.
8789
--mkdocs-port <PORT> Port for MkDocs server to use (default: "8000")
8890
-v --verbose Enable verbose output. (default: false)

packages/techdocs-cli/src/commands/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,10 @@ export function registerCommands(program: Command) {
215215
'--docker-entrypoint <DOCKER_ENTRYPOINT>',
216216
'Override the image entrypoint',
217217
)
218+
.option(
219+
'--docker-option <DOCKER_OPTION...>',
220+
'Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12" (can be added multiple times).',
221+
)
218222
.option(
219223
'--no-docker',
220224
'Do not use Docker, run `mkdocs serve` in current user environment.',
@@ -237,6 +241,10 @@ export function registerCommands(program: Command) {
237241
'--docker-entrypoint <DOCKER_ENTRYPOINT>',
238242
'Override the image entrypoint',
239243
)
244+
.option(
245+
'--docker-option <DOCKER_OPTION...>',
246+
'Extra options to pass to the docker run command, e.g. "--add-host=internal.host:192.168.11.12" (can be added multiple times).',
247+
)
240248
.option(
241249
'--no-docker',
242250
'Do not use Docker, use MkDocs executable in current user environment.',

packages/techdocs-cli/src/commands/serve/mkdocs.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ export default async function serveMkdocs(opts: OptionValues) {
6262
port: opts.port,
6363
dockerImage: opts.dockerImage,
6464
dockerEntrypoint: opts.dockerEntrypoint,
65+
dockerOptions: opts.dockerOption,
6566
useDocker: opts.docker,
6667
stdoutLogFunc: logFunc,
6768
stderrLogFunc: logFunc,

packages/techdocs-cli/src/commands/serve/serve.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export default async function serve(opts: OptionValues) {
9393
port: opts.mkdocsPort,
9494
dockerImage: opts.dockerImage,
9595
dockerEntrypoint: opts.dockerEntrypoint,
96+
dockerOptions: opts.dockerOption,
9697
useDocker: opts.docker,
9798
stdoutLogFunc: mkdocsLogFunc,
9899
stderrLogFunc: mkdocsLogFunc,

packages/techdocs-cli/src/lib/mkdocsServer.test.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,39 @@ describe('runMkdocsServer', () => {
6464
expect.objectContaining({}),
6565
);
6666
});
67+
68+
it('should accept custom docker options', async () => {
69+
await runMkdocsServer({
70+
dockerOptions: [
71+
'--add-host=internal.host:192.168.11.12',
72+
'--name',
73+
'my-techdocs-container',
74+
],
75+
});
76+
77+
expect(run).toHaveBeenCalledWith(
78+
'docker',
79+
expect.arrayContaining([
80+
'run',
81+
'--rm',
82+
'-w',
83+
'/content',
84+
'-v',
85+
`${process.cwd()}:/content`,
86+
'-p',
87+
'8000:8000',
88+
'-it',
89+
'--add-host=internal.host:192.168.11.12',
90+
'--name',
91+
'my-techdocs-container',
92+
'spotify/techdocs',
93+
'serve',
94+
'--dev-addr',
95+
'0.0.0.0:8000',
96+
]),
97+
expect.objectContaining({}),
98+
);
99+
});
67100
});
68101

69102
describe('mkdocs', () => {

packages/techdocs-cli/src/lib/mkdocsServer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const runMkdocsServer = async (options: {
2222
useDocker?: boolean;
2323
dockerImage?: string;
2424
dockerEntrypoint?: string;
25+
dockerOptions?: string[];
2526
stdoutLogFunc?: LogFunc;
2627
stderrLogFunc?: LogFunc;
2728
}): Promise<ChildProcess> => {
@@ -45,6 +46,7 @@ export const runMkdocsServer = async (options: {
4546
...(options.dockerEntrypoint
4647
? ['--entrypoint', options.dockerEntrypoint]
4748
: []),
49+
...(options.dockerOptions || []),
4850
dockerImage,
4951
'serve',
5052
'--dev-addr',

0 commit comments

Comments
 (0)