From 73035b5a4da5d92786e15312959da09ad3eaef4e Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 16:12:44 +0200 Subject: [PATCH 1/7] Publish airgapped image using stripped down preview server --- air_gapped/Dockerfile | 54 ++++++------------------------ air_gapped/Dockerfile.dockerignore | 2 ++ preview/package.json | 8 +++++ preview/preview.js | 3 +- 4 files changed, 22 insertions(+), 45 deletions(-) create mode 100644 preview/package.json diff --git a/air_gapped/Dockerfile b/air_gapped/Dockerfile index 89bc2cb54fdf0..49cd44929fe1e 100644 --- a/air_gapped/Dockerfile +++ b/air_gapped/Dockerfile @@ -1,48 +1,14 @@ -FROM docker.elastic.co/docs/preview:latest AS build +FROM cgr.dev/chainguard/wolfi-base -COPY air_gapped/work/target_repo.git /docs_build/.repos/target_repo.git - -FROM chainguard/wolfi-base:latest -#FROM perl:5.42-bookworm -RUN apk update -RUN apk add perl -RUN apk add curl -RUN apk add perl-app-cpanminus - -RUN apk add gcc make git patch perl-dev wget -RUN apk add openssl-dev -RUN apk add zlib-dev -RUN apk add perl-net-ssleay - -ENV PERL5LIB=/usr/local/lib/perl5 -ENV PATH=/usr/local/bin:$PATH +RUN apk update && apk add nodejs git npm -WORKDIR / -RUN cpanm -n XML::LibXML -RUN cpanm -n File::Copy::Recursive -RUN cpanm -n Path::Class -RUN cpanm -n Parallel::ForkManager -RUN cpanm -n YAML -#RUN apt update -y -#RUN apt-get install -y perl -#RUN apt-get install -y nginx -#RUN apt-get install -y nodejs -#RUN apt-get install -y git - -#RUN apt-get install -y libxml-simple-perl -#RUN apt-get install -y libfile-copy-recursive-perl -#RUN apt-get install -y libpath-class-perl -#RUN apt-get install -y libcapture-tiny-perl -#RUN apt-get install -y libparallel-forkmanager-perl -#RUN apt-get install -y libyaml-perl - -RUN apk add nginx -RUN apk add nodejs - -COPY --from=build /docs_build /docs_build -COPY --from=build /node_modules /node_modules +WORKDIR /app +COPY air_gapped/work/target_repo.git /docs_build/.repos/target_repo.git +COPY --chown=node:node preview /app/preview/ +COPY --chown=node:node template /app/template/ +COPY --chown=node:node preview/package.json /app/package.json +WORKDIR /app +RUN npm install -RUN adduser -D nginx -RUN mkdir -p /var/lib/nginx/tmp/ +ENTRYPOINT ["node", "preview/cli.js", "git", "/docs_build/.repos/target_repo.git"] -CMD ["/docs_build/build_docs.pl", "--in_standard_docker", "--gapped", "--preview"] diff --git a/air_gapped/Dockerfile.dockerignore b/air_gapped/Dockerfile.dockerignore index 62451d99eef45..e3d5422f647c5 100644 --- a/air_gapped/Dockerfile.dockerignore +++ b/air_gapped/Dockerfile.dockerignore @@ -1,2 +1,4 @@ * !air_gapped +!preview +!template \ No newline at end of file diff --git a/preview/package.json b/preview/package.json new file mode 100644 index 0000000000000..c4a1bfb142564 --- /dev/null +++ b/preview/package.json @@ -0,0 +1,8 @@ +{ + "license": "SEE LICENSE IN README.asciidoc", + "dependencies": { + "yargs": "^14.0.0", + "dedent": "^0.7.0", + "recursive-copy": "^2.0.10" + } +} diff --git a/preview/preview.js b/preview/preview.js index 6292de7df9369..6fc3974387aab 100644 --- a/preview/preview.js +++ b/preview/preview.js @@ -188,7 +188,8 @@ const checkRedirects = async (core, path) => { module.exports = Core => { const server = http.createServer((request, response) => { - const parsedUrl = url.parse(request.url); + //const parsedUrl = url.parse(request.url); + const parsedUrl = new URL(`http://${process.env.HOST ?? 'localhost'}${request.url}`); const prefix = hostPrefix(request.headers['host']); const core = Core(prefix); requestHandler(core, parsedUrl, response) From 04570c4bbf473169310a8122be9b29794e3cb4c3 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 16:30:25 +0200 Subject: [PATCH 2/7] update scripts --- air_gapped/build.sh | 12 ++++++------ air_gapped/test.sh | 8 +++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/air_gapped/build.sh b/air_gapped/build.sh index bb91a39fc704e..5bc3c72e4b9da 100755 --- a/air_gapped/build.sh +++ b/air_gapped/build.sh @@ -14,13 +14,13 @@ if [[ ! -d ~/.git-references/built-docs.git ]]; then fi # Get an up to date copy of the repo -rm -rf air_gapped/work -mkdir air_gapped/work -git clone --reference ~/.git-references/built-docs.git --dissociate \ - --depth 2 --branch master --bare \ - git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git +#rm -rf air_gapped/work +#mkdir air_gapped/work +#git clone --reference ~/.git-references/built-docs.git --dissociate \ +# --depth 2 --branch master --bare \ +# git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git + GIT_DIR=air_gapped/work/target_repo.git git fetch # Build the images -source preview/build.sh DOCKER_BUILDKIT=1 docker build -t $AIR_GAPPED -f air_gapped/Dockerfile . diff --git a/air_gapped/test.sh b/air_gapped/test.sh index a7cf7015f0514..bfecd3ce6c096 100755 --- a/air_gapped/test.sh +++ b/air_gapped/test.sh @@ -10,12 +10,10 @@ set -e cd $(git rev-parse --show-toplevel) source ./air_gapped/build.sh -id=$(docker run --rm \ - --publish 8000:8000/tcp \ - -d \ - $AIR_GAPPED) +id=$(docker run --rm --publish 3000:3000 -d $AIR_GAPPED) + echo "Started the air gapped docs. Some useful commands:" echo " docker kill $id" echo " docker logs -tf $id" echo "You should eventually be able to access:" -echo " http://master.localhost:8000/guide/index.html" +echo " http://master.localhost:3000/guide/index.html" From 272e28ba724c8e0999d7f0716684f6e7e7271b6a Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 17:03:45 +0200 Subject: [PATCH 3/7] move test port back to 8000 --- air_gapped/test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/air_gapped/test.sh b/air_gapped/test.sh index bfecd3ce6c096..0c7e616144606 100755 --- a/air_gapped/test.sh +++ b/air_gapped/test.sh @@ -10,10 +10,10 @@ set -e cd $(git rev-parse --show-toplevel) source ./air_gapped/build.sh -id=$(docker run --rm --publish 3000:3000 -d $AIR_GAPPED) +id=$(docker run --rm --publish 8000:3000 -d $AIR_GAPPED) echo "Started the air gapped docs. Some useful commands:" echo " docker kill $id" echo " docker logs -tf $id" echo "You should eventually be able to access:" -echo " http://master.localhost:3000/guide/index.html" +echo " http://master.localhost:8000/guide/index.html" From 532e8e02663d06c3bbf039708b527cd415e7cb13 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 17:04:29 +0200 Subject: [PATCH 4/7] uncomment again --- air_gapped/build.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/air_gapped/build.sh b/air_gapped/build.sh index 5bc3c72e4b9da..a31ad512b48ba 100755 --- a/air_gapped/build.sh +++ b/air_gapped/build.sh @@ -14,11 +14,11 @@ if [[ ! -d ~/.git-references/built-docs.git ]]; then fi # Get an up to date copy of the repo -#rm -rf air_gapped/work -#mkdir air_gapped/work -#git clone --reference ~/.git-references/built-docs.git --dissociate \ -# --depth 2 --branch master --bare \ -# git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git +rm -rf air_gapped/work +mkdir air_gapped/work +git clone --reference ~/.git-references/built-docs.git --dissociate \ + --depth 2 --branch master --bare \ + git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git GIT_DIR=air_gapped/work/target_repo.git git fetch From b4533b6c95b3df65d2ec99e8d25493663872efae Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 17:44:22 +0200 Subject: [PATCH 5/7] isolate air_gapped build scripts --- air_gapped/build.sh | 2 +- air_gapped/build_bk.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/air_gapped/build.sh b/air_gapped/build.sh index a31ad512b48ba..32ee4ad9c77b3 100755 --- a/air_gapped/build.sh +++ b/air_gapped/build.sh @@ -23,4 +23,4 @@ git clone --reference ~/.git-references/built-docs.git --dissociate \ GIT_DIR=air_gapped/work/target_repo.git git fetch # Build the images -DOCKER_BUILDKIT=1 docker build -t $AIR_GAPPED -f air_gapped/Dockerfile . +DOCKER_BUILDKIT=1 docker build -t "$AIR_GAPPED" -f air_gapped/Dockerfile . diff --git a/air_gapped/build_bk.sh b/air_gapped/build_bk.sh index 313a5519df922..ef345a4b24e19 100644 --- a/air_gapped/build_bk.sh +++ b/air_gapped/build_bk.sh @@ -3,6 +3,9 @@ # Build the docker image for the air gapped docs. set -eo pipefail + +export AIR_GAPPED=docker.elastic.co/docs-private/bk_air_gapped:latest + cd $(git rev-parse --show-toplevel) if [[ ! -d /opt/git-mirrors/built-docs.git ]]; then @@ -15,8 +18,8 @@ mkdir air_gapped/work git clone --reference /opt/git-mirrors/built-docs.git --dissociate \ --depth 2 --branch master --bare \ git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git + GIT_DIR=air_gapped/work/target_repo.git git fetch # Build the images -source preview/build.sh DOCKER_BUILDKIT=1 docker build -t "$AIR_GAPPED" -f air_gapped/Dockerfile . From 9686d0cbd770f566c4418981cab05b81a5aa77a8 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 21:09:14 +0200 Subject: [PATCH 6/7] ensure preview/build.sh is still called --- air_gapped/build.sh | 3 ++- air_gapped/build_bk.sh | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/air_gapped/build.sh b/air_gapped/build.sh index 32ee4ad9c77b3..d222ace5e1b67 100755 --- a/air_gapped/build.sh +++ b/air_gapped/build.sh @@ -23,4 +23,5 @@ git clone --reference ~/.git-references/built-docs.git --dissociate \ GIT_DIR=air_gapped/work/target_repo.git git fetch # Build the images -DOCKER_BUILDKIT=1 docker build -t "$AIR_GAPPED" -f air_gapped/Dockerfile . +source preview/build.sh +DOCKER_BUILDKIT=1 docker build -t $AIR_GAPPED -f air_gapped/Dockerfile . diff --git a/air_gapped/build_bk.sh b/air_gapped/build_bk.sh index ef345a4b24e19..38bfd69dbb2c8 100644 --- a/air_gapped/build_bk.sh +++ b/air_gapped/build_bk.sh @@ -3,9 +3,6 @@ # Build the docker image for the air gapped docs. set -eo pipefail - -export AIR_GAPPED=docker.elastic.co/docs-private/bk_air_gapped:latest - cd $(git rev-parse --show-toplevel) if [[ ! -d /opt/git-mirrors/built-docs.git ]]; then @@ -22,4 +19,5 @@ git clone --reference /opt/git-mirrors/built-docs.git --dissociate \ GIT_DIR=air_gapped/work/target_repo.git git fetch # Build the images +source preview/build.sh DOCKER_BUILDKIT=1 docker build -t "$AIR_GAPPED" -f air_gapped/Dockerfile . From ffcda43ebce9f19208152df20ba49189476c85f8 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 10 Sep 2025 21:42:59 +0200 Subject: [PATCH 7/7] ?? null coelescing does not work on older nodejs versions --- air_gapped/test.sh | 2 +- preview/preview.js | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/air_gapped/test.sh b/air_gapped/test.sh index 0c7e616144606..89e7451725f56 100755 --- a/air_gapped/test.sh +++ b/air_gapped/test.sh @@ -10,7 +10,7 @@ set -e cd $(git rev-parse --show-toplevel) source ./air_gapped/build.sh -id=$(docker run --rm --publish 8000:3000 -d $AIR_GAPPED) +id=$(docker run --rm --publish 8000:8000/tcp -d $AIR_GAPPED) echo "Started the air gapped docs. Some useful commands:" echo " docker kill $id" diff --git a/preview/preview.js b/preview/preview.js index 6fc3974387aab..28edcdf1b5e87 100644 --- a/preview/preview.js +++ b/preview/preview.js @@ -188,8 +188,12 @@ const checkRedirects = async (core, path) => { module.exports = Core => { const server = http.createServer((request, response) => { - //const parsedUrl = url.parse(request.url); - const parsedUrl = new URL(`http://${process.env.HOST ?? 'localhost'}${request.url}`); + let host = process.env.HOST; + if (host == null || host === "") { + host = "localhost"; + } + + const parsedUrl = new URL(`http://${host}${request.url}`); const prefix = hostPrefix(request.headers['host']); const core = Core(prefix); requestHandler(core, parsedUrl, response)