From 3903e616df2ca084bd9a2c7401b98cdc4ec503aa Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Tue, 14 Nov 2023 12:13:49 -0600 Subject: [PATCH 1/3] Fixes for 644 and 646 --- .../container-build/cerc-nextjs-base/build.sh | 16 ++++++++++++++++ .../scripts/apply-runtime-env.sh | 3 +++ .../scripts/start-serving-app.sh | 9 ++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh index 3cf5f7f4..4bfd3880 100755 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh @@ -11,3 +11,19 @@ CERC_CONTAINER_BUILD_DOCKERFILE=${CERC_CONTAINER_BUILD_DOCKERFILE:-$SCRIPT_DIR/D CERC_CONTAINER_BUILD_TAG=${CERC_CONTAINER_BUILD_TAG:-cerc/nextjs-base:local} docker build -t $CERC_CONTAINER_BUILD_TAG ${build_command_args} -f $CERC_CONTAINER_BUILD_DOCKERFILE $CERC_CONTAINER_BUILD_WORK_DIR + +if [ $? -eq 0 ] && [ "$CERC_CONTAINER_BUILD_TAG" != "cerc/nextjs-base:local" ]; then + cat < /dev/null && pwd ) +CERC_MAX_GENERATE_TIME=${CERC_MAX_GENERATE_TIME:-60} CERC_BUILD_TOOL="${CERC_BUILD_TOOL}" if [ -z "$CERC_BUILD_TOOL" ]; then @@ -25,7 +27,12 @@ if [ "$CERC_NEXTJS_SKIP_GENERATE" != "true" ]; then jq -e '.scripts.cerc_generate' package.json >/dev/null if [ $? -eq 0 ]; then npm run cerc_generate > gen.out 2>&1 & - tail -n0 -f gen.out | sed '/rendered as static HTML/ q' + timeout $CERC_MAX_GENERATE_TIME bash -c "tail -n0 -f gen.out | sed '/rendered as static HTML/ q'" + if [ $? -ne 0 ]; then + echo "ERROR: 'npm run cerc_generate' exceeded CERC_MAX_GENERATE_TIME." + exit 1 + fi + count=0 while [ $count -lt 10 ]; do sleep 1 -- 2.45.2 From 4ac179b691f4da483b2fb5f6b4ac3fafc0b61a1f Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Tue, 14 Nov 2023 12:22:48 -0600 Subject: [PATCH 2/3] Rename var --- .../cerc-nextjs-base/scripts/apply-runtime-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh index ac3281a3..cf1e7ce5 100755 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/apply-runtime-env.sh @@ -38,7 +38,7 @@ for f in $(find "$TRG_DIR" -regex ".*.[tj]sx?$" -type f | grep -v 'node_modules' orig_name=$(echo -n "${e}" | sed 's/"//g') cur_name=$(echo -n "${orig_name}" | sed 's/CERC_RUNTIME_ENV_//g') cur_val=$(echo -n "\$${cur_name}" | envsubst) - if [ "$CERC_RETAIN_QUOTES" != "true" ]; then + if [ "$CERC_RETAIN_ENV_QUOTES" != "true" ]; then cur_val=$(sed "s/^[\"']//" <<< "$cur_val" | sed "s/[\"']//") fi esc_val=$(sed 's/[&/\]/\\&/g' <<< "$cur_val") -- 2.45.2 From 11be077dc87034ae775351cdaf3a9ec8841c26ea Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Tue, 14 Nov 2023 16:06:09 -0600 Subject: [PATCH 3/3] Minor improvements --- .../cerc-nextjs-base/Dockerfile | 2 +- .../container-build/cerc-nextjs-base/build.sh | 2 +- .../scripts/start-serving-app.sh | 36 +++++++++++++------ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile b/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile index 69e38932..c2416b67 100644 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/Dockerfile @@ -39,4 +39,4 @@ EXPOSE 3000 COPY /scripts /scripts # Default command sleeps forever so docker doesn't kill it -CMD ["/scripts/start-serving-app.sh"] +ENTRYPOINT ["/scripts/start-serving-app.sh"] diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh index 4bfd3880..342dd3cd 100755 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/build.sh @@ -23,7 +23,7 @@ Built host container for $CERC_CONTAINER_BUILD_WORK_DIR with tag: To test locally run: - docker run -p 3000:3000 $CERC_CONTAINER_BUILD_TAG + docker run -p 3000:3000 --env-file /path/to/environment.env $CERC_CONTAINER_BUILD_TAG EOF fi diff --git a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh index 1f0bc437..aec65f29 100755 --- a/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh +++ b/stack_orchestrator/data/container-build/cerc-nextjs-base/scripts/start-serving-app.sh @@ -6,6 +6,13 @@ fi SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) CERC_MAX_GENERATE_TIME=${CERC_MAX_GENERATE_TIME:-60} +tpid="" + +ctrl_c() { + kill $tpid $(ps -ef | grep node | grep next | awk '{print $2}') 2>/dev/null +} + +trap ctrl_c INT CERC_BUILD_TOOL="${CERC_BUILD_TOOL}" if [ -z "$CERC_BUILD_TOOL" ]; then @@ -27,23 +34,32 @@ if [ "$CERC_NEXTJS_SKIP_GENERATE" != "true" ]; then jq -e '.scripts.cerc_generate' package.json >/dev/null if [ $? -eq 0 ]; then npm run cerc_generate > gen.out 2>&1 & - timeout $CERC_MAX_GENERATE_TIME bash -c "tail -n0 -f gen.out | sed '/rendered as static HTML/ q'" - if [ $? -ne 0 ]; then - echo "ERROR: 'npm run cerc_generate' exceeded CERC_MAX_GENERATE_TIME." - exit 1 - fi + tail -f gen.out & + tpid=$! count=0 - while [ $count -lt 10 ]; do + generate_done="false" + while [ $count -lt $CERC_MAX_GENERATE_TIME ]; do sleep 1 - ps -ef | grep 'node' | grep 'next' | grep 'generate' >/dev/null - if [ $? -ne 0 ]; then - break + grep 'rendered as static HTML' gen.out > /dev/null + if [ $? -eq 0 ]; then + generate_done="true" + ps -ef | grep 'node' | grep 'next' | grep 'generate' >/dev/null + if [ $? -ne 0 ]; then + break + fi else count=$((count + 1)) fi done - kill $(ps -ef |grep node | grep next | grep generate | awk '{print $2}') 2>/dev/null + + if [ $generate_done != "true" ]; then + echo "ERROR: 'npm run cerc_generate' not successful within CERC_MAX_GENERATE_TIME" 1>&2 + exit 1 + fi + + kill $tpid $(ps -ef | grep node | grep next | grep generate | awk '{print $2}') 2>/dev/null + tpid="" fi fi -- 2.45.2