diff --git a/.changeset/techdocs-fresh-panthers-kick.md b/.changeset/techdocs-fresh-panthers-kick.md new file mode 100644 index 0000000000..a35d36a0a8 --- /dev/null +++ b/.changeset/techdocs-fresh-panthers-kick.md @@ -0,0 +1,5 @@ +--- +'@techdocs/cli': patch +--- + +Adds a new flag to override the entrypoint when using a custom docker image. It could be used to reuse existing images with different entrypoints. diff --git a/docs/features/techdocs/cli.md b/docs/features/techdocs/cli.md index 6efb83549e..45e324574c 100644 --- a/docs/features/techdocs/cli.md +++ b/docs/features/techdocs/cli.md @@ -71,7 +71,7 @@ implementation, which uses the MkDocs preview server as a proxy to fetch the generated documentation files and assets. NOTE: When using a custom `techdocs` docker image, make sure the entry point is -also `ENTRYPOINT ["mkdocs"]`. +also `ENTRYPOINT ["mkdocs"]` or override with `--docker-entrypoint`. Command reference: @@ -81,11 +81,12 @@ Usage: techdocs-cli serve [options] Serve a documentation project locally in a Backstage app-like environment Options: - -i, --docker-image The mkdocs docker container to use (default: "spotify/techdocs") - --no-docker Do not use Docker, use MkDocs executable in current user environment. - --mkdocs-port Port for MkDocs server to use (default: "8000") - -v --verbose Enable verbose output. (default: false) - -h, --help display help for command + -i, --docker-image The mkdocs docker container to use (default: "spotify/techdocs") + --docker-entrypoint Override the image entrypoint + --no-docker Do not use Docker, use MkDocs executable in current user environment. + --mkdocs-port Port for MkDocs server to use (default: "8000") + -v --verbose Enable verbose output. (default: false) + -h, --help display help for command ``` ### Generate TechDocs site from a documentation project diff --git a/packages/techdocs-cli/src/commands/index.ts b/packages/techdocs-cli/src/commands/index.ts index 6ad62c5668..16f89d0372 100644 --- a/packages/techdocs-cli/src/commands/index.ts +++ b/packages/techdocs-cli/src/commands/index.ts @@ -206,6 +206,10 @@ export function registerCommands(program: CommanderStatic) { 'The mkdocs docker container to use', defaultDockerImage, ) + .option( + '--docker-entrypoint ', + 'Override the image entrypoint', + ) .option( '--no-docker', 'Do not use Docker, run `mkdocs serve` in current user environment.', @@ -224,6 +228,10 @@ export function registerCommands(program: CommanderStatic) { 'The mkdocs docker container to use', defaultDockerImage, ) + .option( + '--docker-entrypoint ', + 'Override the image entrypoint', + ) .option( '--no-docker', 'Do not use Docker, use MkDocs executable in current user environment.', diff --git a/packages/techdocs-cli/src/commands/serve/mkdocs.ts b/packages/techdocs-cli/src/commands/serve/mkdocs.ts index f6779c5146..6a0952b945 100644 --- a/packages/techdocs-cli/src/commands/serve/mkdocs.ts +++ b/packages/techdocs-cli/src/commands/serve/mkdocs.ts @@ -61,6 +61,7 @@ export default async function serveMkdocs(cmd: Command) { const childProcess = await runMkdocsServer({ port: cmd.port, dockerImage: cmd.dockerImage, + dockerEntrypoint: cmd.dockerEntrypoint, useDocker: cmd.docker, stdoutLogFunc: logFunc, stderrLogFunc: logFunc, diff --git a/packages/techdocs-cli/src/commands/serve/serve.ts b/packages/techdocs-cli/src/commands/serve/serve.ts index d5b8191cf9..c2ac6d8105 100644 --- a/packages/techdocs-cli/src/commands/serve/serve.ts +++ b/packages/techdocs-cli/src/commands/serve/serve.ts @@ -90,6 +90,7 @@ export default async function serve(cmd: Command) { const mkdocsChildProcess = await runMkdocsServer({ port: cmd.mkdocsPort, dockerImage: cmd.dockerImage, + dockerEntrypoint: cmd.dockerEntrypoint, useDocker: cmd.docker, stdoutLogFunc: mkdocsLogFunc, stderrLogFunc: mkdocsLogFunc, diff --git a/packages/techdocs-cli/src/lib/mkdocsServer.ts b/packages/techdocs-cli/src/lib/mkdocsServer.ts index 60efcfaa89..c0b0cec498 100644 --- a/packages/techdocs-cli/src/lib/mkdocsServer.ts +++ b/packages/techdocs-cli/src/lib/mkdocsServer.ts @@ -21,6 +21,7 @@ export const runMkdocsServer = async (options: { port?: string; useDocker?: boolean; dockerImage?: string; + dockerEntrypoint?: string; stdoutLogFunc?: LogFunc; stderrLogFunc?: LogFunc; }): Promise => { @@ -41,6 +42,9 @@ export const runMkdocsServer = async (options: { '-p', `${port}:${port}`, '-it', + ...(options.dockerEntrypoint + ? ['--entrypoint', options.dockerEntrypoint] + : []), dockerImage, 'serve', '--dev-addr',