From cca59be6db303d22827ae654ed7ae227d0dece48 Mon Sep 17 00:00:00 2001 From: Bibo Hao Date: Wed, 11 Mar 2026 06:02:34 +0000 Subject: [PATCH 01/12] add nocobase --- .github/workflows/build-docker.yml | 12 +++++++++++- docker_nocobase/nocobase.Dockerfile | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 docker_nocobase/nocobase.Dockerfile diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index be96444..ed82d46 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -106,6 +106,16 @@ jobs: source ./tool.sh build_image logent latest docker_logent/logent.Dockerfile && push_image logent + ## nocobase for low-code development platform + job-nocobase: + name: 'nocobase' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: | + source ./tool.sh + build_image nocobase latest docker_nocobase/nocobase.Dockerfile && push_image nocobase + ## DevBox - base job-base-dev: @@ -168,7 +178,7 @@ jobs: ## Sync all images in this build (listed by "names") to mirror registry. sync_images: - needs: ["job-cuda-dev", "job-data-science-dev", "job-full-stack-dev"] + needs: ["job-cuda-dev", "job-data-science-dev", "job-full-stack-dev", "job-base-dev", "job-nocobase", "job-logent", "job-storebox", "job-searxng", "job-openresty", "job-dev-hub", "docker_keycloak", "docker_casdoor", "docker_clash"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile new file mode 100644 index 0000000..8b46ef5 --- /dev/null +++ b/docker_nocobase/nocobase.Dockerfile @@ -0,0 +1,26 @@ +# Distributed under the terms of the Modified BSD License. + +ARG BASE_NAMESPACE +ARG BASE_IMG="atom" + +FROM ${BASE_NAMESPACE:+$BASE_NAMESPACE/}${BASE_IMG} + +COPY work /opt/utils + +RUN set -eux \ + && apt-get -qq update -yq --fix-missing && apt-get -qq install -yq --no-install-recommends \ + git jq \ + && mkdir -pv /opt/nocobase && cd /opt/nocobase \ + && git config --global --add safe.directory /opt/nocobase \ + && git init && git remote add origin https://github.com/nocobase/nocobase \ + && git fetch && git checkout -t origin/main \ + # ----------------------------- Install dependencies and build + && source /opt/utils/script-setup.sh && setup_node_base 20 && source /etc/profile\ + && npm install -g yarn \ + && yarn install --frozen-lockfile && yarn run build --not-dts \ + # ----------------------------- Install supervisord + && source /opt/utils/script-setup-sys.sh && setup_supervisord \ + # ----------------------------- Install caddy + && source /opt/utils/script-setup-net.sh && setup_caddy \ + # Clean up and display components version information... + && list_installed_packages && install__clean From 7438bbd250afa4d4b0c610a9814665685e81073c Mon Sep 17 00:00:00 2001 From: Bibo Hao Date: Wed, 11 Mar 2026 06:05:12 +0000 Subject: [PATCH 02/12] add script --- docker_nocobase/work/scritp-setup-nocobase.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docker_nocobase/work/scritp-setup-nocobase.sh diff --git a/docker_nocobase/work/scritp-setup-nocobase.sh b/docker_nocobase/work/scritp-setup-nocobase.sh new file mode 100644 index 0000000..e69de29 From a52bee06b8df36364fe8a3ee6621011a03a71921 Mon Sep 17 00:00:00 2001 From: Bibo Hao Date: Wed, 11 Mar 2026 06:14:20 +0000 Subject: [PATCH 03/12] debug nocobase --- docker_nocobase/nocobase.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index 8b46ef5..cf2adf0 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -15,7 +15,7 @@ RUN set -eux \ && git init && git remote add origin https://github.com/nocobase/nocobase \ && git fetch && git checkout -t origin/main \ # ----------------------------- Install dependencies and build - && source /opt/utils/script-setup.sh && setup_node_base 20 && source /etc/profile\ + && source /opt/utils/script-setup.sh && setup_node_base 20 && source /etc/profile.d/path-*.sh \ && npm install -g yarn \ && yarn install --frozen-lockfile && yarn run build --not-dts \ # ----------------------------- Install supervisord From 439a9083f23c9a271f5992eee98513c7bd98bbb1 Mon Sep 17 00:00:00 2001 From: haobibo Date: Wed, 11 Mar 2026 20:48:59 +0800 Subject: [PATCH 04/12] update nocobase install --- docker_nocobase/nocobase.Dockerfile | 23 ++++++++++--------- docker_nocobase/work/scritp-setup-nocobase.sh | 19 +++++++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index cf2adf0..a890529 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -9,18 +9,19 @@ COPY work /opt/utils RUN set -eux \ && apt-get -qq update -yq --fix-missing && apt-get -qq install -yq --no-install-recommends \ - git jq \ - && mkdir -pv /opt/nocobase && cd /opt/nocobase \ - && git config --global --add safe.directory /opt/nocobase \ - && git init && git remote add origin https://github.com/nocobase/nocobase \ - && git fetch && git checkout -t origin/main \ - # ----------------------------- Install dependencies and build - && source /opt/utils/script-setup.sh && setup_node_base 20 && source /etc/profile.d/path-*.sh \ - && npm install -g yarn \ - && yarn install --frozen-lockfile && yarn run build --not-dts \ - # ----------------------------- Install supervisord + git jq libaio1 libgssapi-krb5-2 \ + libfreetype6 fontconfig fonts-liberation fonts-noto-cjk \ + ## ----------------------------- Install postgresql client + && source /opt/utils/script-setup-db-clients.sh && setup_postgresql_client \ + ## ----------------------------- Install supervisord && source /opt/utils/script-setup-sys.sh && setup_supervisord \ - # ----------------------------- Install caddy + ## ----------------------------- Install caddy && source /opt/utils/script-setup-net.sh && setup_caddy \ + ## ----------------------------- Install dependencies and build + && source /opt/utils/script-setup.sh && setup_node_base 20 && source /etc/profile.d/path-*.sh \ + && npm install -g yarn \ + && source /opt/utils/script-setup-nocobase.sh \ + && cd /opt && setup_nocobase_create_app \ + && ls -alh \ # Clean up and display components version information... && list_installed_packages && install__clean diff --git a/docker_nocobase/work/scritp-setup-nocobase.sh b/docker_nocobase/work/scritp-setup-nocobase.sh index e69de29..b8a43a8 100644 --- a/docker_nocobase/work/scritp-setup-nocobase.sh +++ b/docker_nocobase/work/scritp-setup-nocobase.sh @@ -0,0 +1,19 @@ +setup_nocobase_create_app(){ + local VER_NOCO=${1:-"latest"} \ + && npx -y create-nocobase-app@${VER_NOCO} nocobases --empty-key --skip-dev-dependencies -a -e APP_ENV=production \ + && cd nocobases \ + && yarn install --production \ + && rm -rf yarn.lock \ + && find node_modules -type f -name "yarn.lock" -delete \ + && find node_modules -type f -name "bower.json" -delete \ + && find node_modules -type f -name "composer.json" -delete ; +} + +setup_nocobase_from_source(){ + local BRANCH_NOCO=${1:-"origin/main"} \ + && cd /opt/nocobase \ + && git config --global --add safe.directory /opt/nocobase \ + && git init && git remote add origin https://github.com/nocobase/nocobase \ + && git fetch && git checkout -t $BRANCH_NOCO \ + && yarn install --frozen-lockfile && yarn run build --not-dts ; +} From db3d09b1edc7f4a6e5cd02847760af031c37907f Mon Sep 17 00:00:00 2001 From: haobibo Date: Wed, 11 Mar 2026 20:52:08 +0800 Subject: [PATCH 05/12] fix: correct package name for libaio1 in Dockerfile --- docker_nocobase/nocobase.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index a890529..fc19156 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -9,7 +9,7 @@ COPY work /opt/utils RUN set -eux \ && apt-get -qq update -yq --fix-missing && apt-get -qq install -yq --no-install-recommends \ - git jq libaio1 libgssapi-krb5-2 \ + git jq libaio1t64 libgssapi-krb5-2 \ libfreetype6 fontconfig fonts-liberation fonts-noto-cjk \ ## ----------------------------- Install postgresql client && source /opt/utils/script-setup-db-clients.sh && setup_postgresql_client \ From bc441805862810d7246352b5f41bb65f9d132550 Mon Sep 17 00:00:00 2001 From: haobibo Date: Wed, 11 Mar 2026 20:54:10 +0800 Subject: [PATCH 06/12] feat: add setup scripts for nocobase application and source installation --- .../work/{scritp-setup-nocobase.sh => script-setup-nocobase.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docker_nocobase/work/{scritp-setup-nocobase.sh => script-setup-nocobase.sh} (100%) diff --git a/docker_nocobase/work/scritp-setup-nocobase.sh b/docker_nocobase/work/script-setup-nocobase.sh similarity index 100% rename from docker_nocobase/work/scritp-setup-nocobase.sh rename to docker_nocobase/work/script-setup-nocobase.sh From a383dc7da7dfe1cbeda8fee1d1a872ebb68aad00 Mon Sep 17 00:00:00 2001 From: haobibo Date: Wed, 11 Mar 2026 23:09:24 +0800 Subject: [PATCH 07/12] update nocobase --- docker_nocobase/nocobase.Dockerfile | 11 +++++++++++ docker_nocobase/work/docker-entrypoint.sh | 10 ++++++++++ docker_nocobase/work/script-setup-nocobase.sh | 4 ++-- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 docker_nocobase/work/docker-entrypoint.sh diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index fc19156..e3a4bb2 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -22,6 +22,17 @@ RUN set -eux \ && npm install -g yarn \ && source /opt/utils/script-setup-nocobase.sh \ && cd /opt && setup_nocobase_create_app \ + && mv /opt/utils/docker-entrypoint.sh /opt/nocobase/ \ + && chmod +x /opt/nocobase/*.sh \ && ls -alh \ # Clean up and display components version information... + && find ./node_modules -type f \( -name "README.md" -o -name "License" \) -delete 2>/dev/null \ + && find ./node_modules \( \ + -type d \( -name "test" -o -name "tests" -o -name "__tests__" -o -name "docs" -o -name "doc" \) \ + \) -exec rm -rf {} + 2>/dev/null \ && list_installed_packages && install__clean + +EXPOSE 13000 +WORKDIR /opt/nocobase +VOLUME [ "/opt/nocobase/storage" ] +ENTRYPOINT [ "/opt/nocobase/docker-entrypoint.sh" ] diff --git a/docker_nocobase/work/docker-entrypoint.sh b/docker_nocobase/work/docker-entrypoint.sh new file mode 100644 index 0000000..d515394 --- /dev/null +++ b/docker_nocobase/work/docker-entrypoint.sh @@ -0,0 +1,10 @@ +# run scripts in storage/scripts +if [ -d "/opt/nocobase/storage/scripts" ]; then + for f in /opt/nocobase/storage/scripts/*.sh; do + [ -e "$f" ] || continue + echo "Running $f" + sh "$f" + done +fi + +cd /opt/nocobase && yarn start --quickstart diff --git a/docker_nocobase/work/script-setup-nocobase.sh b/docker_nocobase/work/script-setup-nocobase.sh index b8a43a8..41d9306 100644 --- a/docker_nocobase/work/script-setup-nocobase.sh +++ b/docker_nocobase/work/script-setup-nocobase.sh @@ -1,7 +1,7 @@ setup_nocobase_create_app(){ local VER_NOCO=${1:-"latest"} \ - && npx -y create-nocobase-app@${VER_NOCO} nocobases --empty-key --skip-dev-dependencies -a -e APP_ENV=production \ - && cd nocobases \ + && npx -y create-nocobase-app@${VER_NOCO} nocobase --empty-key --skip-dev-dependencies -a -e APP_ENV=production \ + && cd nocobase \ && yarn install --production \ && rm -rf yarn.lock \ && find node_modules -type f -name "yarn.lock" -delete \ From 54d9169f0d1c99dcba1dbfc40c1b2f424fa2ba63 Mon Sep 17 00:00:00 2001 From: haobibo Date: Wed, 11 Mar 2026 23:38:26 +0800 Subject: [PATCH 08/12] feat: update Dockerfiles to include maintainer label and adjust entrypoint for nocobase --- docker_casdoor/casdoor.Dockerfile | 4 +++- docker_logent/logent.Dockerfile | 2 ++ docker_nocobase/nocobase.Dockerfile | 8 ++++---- docker_nocobase/work/docker-entrypoint.sh | 2 ++ docker_searxng/searxng.Dockerfile | 4 +++- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docker_casdoor/casdoor.Dockerfile b/docker_casdoor/casdoor.Dockerfile index d4626a6..463b1e5 100644 --- a/docker_casdoor/casdoor.Dockerfile +++ b/docker_casdoor/casdoor.Dockerfile @@ -28,11 +28,13 @@ RUN set -eux \ LABEL maintainer="postmaster@labnow.ai" ENV RUNNING_IN_DOCKER=true -WORKDIR /opt/casdoor # 8000=web, 389=ldap, 1812=radius EXPOSE 8000 389 1812 ENTRYPOINT ["/bin/bash"] CMD ["/opt/casdoor/docker-entrypoint.sh"] +WORKDIR /opt/casdoor +# https://casdoor.org/zh/docs/provider/storage/localFileSystem/ +VOLUME [ "/opt/casdoor/files" ] HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD ["curl", "--head", "-fsSk", "http://localhost:8000/health/ready"] diff --git a/docker_logent/logent.Dockerfile b/docker_logent/logent.Dockerfile index 5fe1c88..d4992dd 100644 --- a/docker_logent/logent.Dockerfile +++ b/docker_logent/logent.Dockerfile @@ -5,6 +5,8 @@ ARG BASE_IMG="atom" FROM ${BASE_NAMESPACE:+$BASE_NAMESPACE/}${BASE_IMG} +LABEL maintainer="postmaster@labnow.ai" + COPY work /opt/utils RUN set -eux \ diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index e3a4bb2..19dedbb 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -27,12 +27,12 @@ RUN set -eux \ && ls -alh \ # Clean up and display components version information... && find ./node_modules -type f \( -name "README.md" -o -name "License" \) -delete 2>/dev/null \ - && find ./node_modules \( \ - -type d \( -name "test" -o -name "tests" -o -name "__tests__" -o -name "docs" -o -name "doc" \) \ - \) -exec rm -rf {} + 2>/dev/null \ + && find ./node_modules -type d \( -name "test" -o -name "tests" -o -name "__tests__" -o -name "docs" -o -name "doc" \) -exec rm -rf {} + 2>/dev/null \ && list_installed_packages && install__clean +LABEL maintainer="postmaster@labnow.ai" EXPOSE 13000 WORKDIR /opt/nocobase VOLUME [ "/opt/nocobase/storage" ] -ENTRYPOINT [ "/opt/nocobase/docker-entrypoint.sh" ] +ENTRYPOINT ["/bin/bash"] +CMD [ "/opt/nocobase/docker-entrypoint.sh" ] diff --git a/docker_nocobase/work/docker-entrypoint.sh b/docker_nocobase/work/docker-entrypoint.sh index d515394..6af0358 100644 --- a/docker_nocobase/work/docker-entrypoint.sh +++ b/docker_nocobase/work/docker-entrypoint.sh @@ -1,3 +1,5 @@ +#!/bin/bash + # run scripts in storage/scripts if [ -d "/opt/nocobase/storage/scripts" ]; then for f in /opt/nocobase/storage/scripts/*.sh; do diff --git a/docker_searxng/searxng.Dockerfile b/docker_searxng/searxng.Dockerfile index 63e6631..8339bc6 100644 --- a/docker_searxng/searxng.Dockerfile +++ b/docker_searxng/searxng.Dockerfile @@ -5,6 +5,8 @@ ARG BASE_IMG="base" FROM ${BASE_NAMESPACE:+$BASE_NAMESPACE/}${BASE_IMG} +LABEL maintainer="postmaster@labnow.ai" + COPY work /tmp/searxng RUN set -eux \ @@ -51,6 +53,6 @@ ENTRYPOINT ["tini", "-g", "--"] # '--login': make bash first reads and executes commands from the file /etc/profile, if that file exists. # After that, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. SHELL ["/bin/bash", "--login", "-o", "pipefail", "-c"] -WORKDIR /opt/searxng CMD ["/opt/searxng/start-supervisord.sh"] EXPOSE 8080 9001 8000 +WORKDIR /opt/searxng From b66c9ad9415d4da64e032c1446570ee3320e39f6 Mon Sep 17 00:00:00 2001 From: haobibo Date: Wed, 11 Mar 2026 23:54:32 +0800 Subject: [PATCH 09/12] feat: update Dockerfile to use SHELL with bash options and modify entrypoint script shebang --- docker_nocobase/nocobase.Dockerfile | 9 ++++++++- docker_nocobase/work/docker-entrypoint.sh | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index 19dedbb..a79fec8 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -34,5 +34,12 @@ LABEL maintainer="postmaster@labnow.ai" EXPOSE 13000 WORKDIR /opt/nocobase VOLUME [ "/opt/nocobase/storage" ] -ENTRYPOINT ["/bin/bash"] + +# '-c' option make bash commands are read from string. +# If there are arguments after the string, they are assigned to the positional parameters, starting with $0. +# '-o pipefail' prevents errors in a pipeline from being masked. +# If any command in a pipeline fails, that return code will be used as the return code of the whole pipeline. +# '--login': make bash first reads and executes commands from the file /etc/profile, if that file exists. +# After that, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. +SHELL ["/bin/bash", "--login", "-o", "pipefail", "-c"] CMD [ "/opt/nocobase/docker-entrypoint.sh" ] diff --git a/docker_nocobase/work/docker-entrypoint.sh b/docker_nocobase/work/docker-entrypoint.sh index 6af0358..dc888e8 100644 --- a/docker_nocobase/work/docker-entrypoint.sh +++ b/docker_nocobase/work/docker-entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! /usr/bin/env bash # run scripts in storage/scripts if [ -d "/opt/nocobase/storage/scripts" ]; then From 5f018e76731007b3e187e970520f7c1964079644 Mon Sep 17 00:00:00 2001 From: haobibo Date: Thu, 12 Mar 2026 00:06:13 +0800 Subject: [PATCH 10/12] refactor: comment out supervisord and caddy setup in Dockerfile; reorder entrypoint script to source profile before installation --- docker_nocobase/nocobase.Dockerfile | 4 ++-- docker_nocobase/work/docker-entrypoint.sh | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docker_nocobase/nocobase.Dockerfile b/docker_nocobase/nocobase.Dockerfile index a79fec8..79ecf71 100644 --- a/docker_nocobase/nocobase.Dockerfile +++ b/docker_nocobase/nocobase.Dockerfile @@ -14,9 +14,9 @@ RUN set -eux \ ## ----------------------------- Install postgresql client && source /opt/utils/script-setup-db-clients.sh && setup_postgresql_client \ ## ----------------------------- Install supervisord - && source /opt/utils/script-setup-sys.sh && setup_supervisord \ + ## && source /opt/utils/script-setup-sys.sh && setup_supervisord \ ## ----------------------------- Install caddy - && source /opt/utils/script-setup-net.sh && setup_caddy \ + ## && source /opt/utils/script-setup-net.sh && setup_caddy \ ## ----------------------------- Install dependencies and build && source /opt/utils/script-setup.sh && setup_node_base 20 && source /etc/profile.d/path-*.sh \ && npm install -g yarn \ diff --git a/docker_nocobase/work/docker-entrypoint.sh b/docker_nocobase/work/docker-entrypoint.sh index dc888e8..0b0a393 100644 --- a/docker_nocobase/work/docker-entrypoint.sh +++ b/docker_nocobase/work/docker-entrypoint.sh @@ -9,4 +9,6 @@ if [ -d "/opt/nocobase/storage/scripts" ]; then done fi -cd /opt/nocobase && yarn start --quickstart +source /etc/profile.d/path-*.sh + +cd /opt/nocobase && yarn nocobase install --lang=${LOCALE:-"zh-CN"} && yarn start --quickstart From 2de825b89999ef2862ed23c34c589b2632a20d83 Mon Sep 17 00:00:00 2001 From: haobibo Date: Thu, 12 Mar 2026 03:02:08 +0800 Subject: [PATCH 11/12] update cicd --- .github/workflows/build-docker.yml | 28 +++++++-------- tool.sh | 57 +++++++++++++++++------------- 2 files changed, 47 insertions(+), 38 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index ed82d46..03c8099 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -33,7 +33,7 @@ jobs: name: 'app-clash' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && build_image app-clash latest docker_clash/clash.Dockerfile && push_image clash @@ -42,7 +42,7 @@ jobs: name: 'casdoor' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && build_image casdoor latest docker_casdoor/casdoor.Dockerfile && push_image casdoor @@ -51,7 +51,7 @@ jobs: name: 'keycloak' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && build_image keycloak latest docker_keycloak/keycloak.Dockerfile && push_image keycloak @@ -60,7 +60,7 @@ jobs: name: 'dev-hub' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh build_image dev-hub latest docker_devbox/hub.Dockerfile \ @@ -73,7 +73,7 @@ jobs: name: 'openresty' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && build_image openresty latest docker_openresty/openresty.Dockerfile && push_image openresty @@ -82,7 +82,7 @@ jobs: name: 'searxng' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && build_image searxng latest docker_searxng/searxng.Dockerfile && push_image searxng @@ -91,7 +91,7 @@ jobs: name: 'storebox' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh build_image storebox latest docker_storebox/storebox.Dockerfile && push_image storebox @@ -101,7 +101,7 @@ jobs: name: 'logent' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh build_image logent latest docker_logent/logent.Dockerfile && push_image logent @@ -111,7 +111,7 @@ jobs: name: 'nocobase' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh build_image nocobase latest docker_nocobase/nocobase.Dockerfile && push_image nocobase @@ -122,7 +122,7 @@ jobs: name: 'developer,base-dev' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && free_diskspace build_image base-dev latest docker_devbox/dev.Dockerfile \ @@ -136,7 +136,7 @@ jobs: name: 'data-science-dev' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && free_diskspace build_image data-science-dev latest docker_devbox/dev.Dockerfile \ @@ -151,7 +151,7 @@ jobs: name: 'full-stack-dev' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && free_diskspace build_image full-stack-dev latest docker_devbox/dev.Dockerfile \ @@ -166,7 +166,7 @@ jobs: name: 'full-cuda,cuda-dev' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | source ./tool.sh && free_diskspace build_image cuda-dev latest docker_devbox/dev.Dockerfile \ @@ -181,7 +181,7 @@ jobs: needs: ["job-cuda-dev", "job-data-science-dev", "job-full-stack-dev", "job-base-dev", "job-nocobase", "job-logent", "job-storebox", "job-searxng", "job-openresty", "job-dev-hub", "docker_keycloak", "docker_casdoor", "docker_clash"] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - env: AUTH_FILE_CONTENT: ${{ secrets.AUTH_FILE_CONTENT }} DOCKER_MIRROR_REGISTRY: ${{ vars.DOCKER_MIRROR_REGISTRY }} diff --git a/tool.sh b/tool.sh index 12114bf..804a990 100644 --- a/tool.sh +++ b/tool.sh @@ -5,13 +5,10 @@ CI_PROJECT_NAME=${CI_PROJECT_NAME:-$GITHUB_REPOSITORY} CI_PROJECT_BRANCH=${GITHUB_HEAD_REF:-"main"} CI_PROJECT_SPACE=$(echo "${CI_PROJECT_BRANCH}" | cut -f1 -d'/') -if [ "${CI_PROJECT_BRANCH}" = "main" ] ; then - # If on the main branch, docker images namespace will be same as CI_PROJECT_NAME's name space - export CI_PROJECT_NAMESPACE="$(dirname ${CI_PROJECT_NAME})" ; -else - # not main branch, docker namespace = {CI_PROJECT_NAME's name space} + "0" + {1st substr before / in CI_PROJECT_SPACE} - export CI_PROJECT_NAMESPACE="$(dirname ${CI_PROJECT_NAME})0${CI_PROJECT_SPACE}" ; -fi +# If on the main branch, image namespace will be same as CI_PROJECT_NAME's name space; +# else (not main branch), image namespace = {CI_PROJECT_NAME's name space} + "0" + {1st substr before / in CI_PROJECT_SPACE}. +[ "${CI_PROJECT_BRANCH}" = "main" ] && NAMESPACE_SUFFIX="" || NAMESPACE_SUFFIX="0${CI_PROJECT_SPACE}" ; +export CI_PROJECT_NAMESPACE="$(dirname ${CI_PROJECT_NAME})${NAMESPACE_SUFFIX}" ; export IMG_NAMESPACE=$(echo "${CI_PROJECT_NAMESPACE}" | awk '{print tolower($0)}') export IMG_PREFIX_SRC=$(echo "${REGISTRY_SRC:-"docker.io"}/${IMG_NAMESPACE}" | awk '{print tolower($0)}') @@ -24,41 +21,41 @@ echo "--------> DOCKER_IMG_PREFIX_SRC=${IMG_PREFIX_SRC}" echo "--------> DOCKER_IMG_PREFIX_DST=${IMG_PREFIX_DST}" echo "--------> DOCKER_TAG_SUFFIX=${TAG_SUFFIX}" -[ ! -f /etc/docker/daemon.json ] && sudo tee /etc/docker/daemon.json > /dev/null <<< '{}' -jq '.experimental=true | ."data-root"="/mnt/docker"' /etc/docker/daemon.json > /tmp/daemon.json && sudo mv /tmp/daemon.json /etc/docker/ -( sudo service docker restart || true ) && cat /etc/docker/daemon.json && docker info build_image() { echo "$@" ; IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(dirname $FILE)"; - docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" ; - docker tag "${IMG_PREFIX_DST}/${IMG}:${TAG}" "${IMG_PREFIX_DST}/${IMG}:${VER}" ; + docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" >&2 + docker tag "${IMG_PREFIX_DST}/${IMG}:${TAG}" "${IMG_PREFIX_DST}/${IMG}:${VER}" >&2 + echo "${IMG_PREFIX_DST}/${IMG}:${TAG}" } build_image_no_tag() { echo "$@" ; IMG=$1; TAG=$2; FILE=$3; shift 3; WORKDIR="$(dirname $FILE)"; - docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" ; + docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" >&2 + echo "${IMG_PREFIX_DST}/${IMG}:${TAG}" } build_image_common() { echo "$@" ; IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(dirname $FILE)"; - docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" ; - docker tag "${IMG_PREFIX_DST}/${IMG}:${TAG}" "${IMG_PREFIX_DST}/${IMG}:${VER}" ; + docker build --compress --force-rm=true -t "${IMG_PREFIX_DST}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX_SRC}" "$@" "${WORKDIR}" >&2 + docker tag "${IMG_PREFIX_DST}/${IMG}:${TAG}" "${IMG_PREFIX_DST}/${IMG}:${VER}" >&2 + echo "${IMG_PREFIX_DST}/${IMG}:${TAG}" } alias_image() { IMG_1=$1; TAG_1=$2; IMG_2=$3; TAG_2=$4; shift 4; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; - docker tag "${IMG_PREFIX_DST}/${IMG_1}:${TAG_1}" "${IMG_PREFIX_DST}/${IMG_2}:${TAG_2}" ; - docker tag "${IMG_PREFIX_DST}/${IMG_2}:${TAG_2}" "${IMG_PREFIX_DST}/${IMG_2}:${VER}" ; + docker tag "${IMG_PREFIX_DST}/${IMG_1}:${TAG_1}" "${IMG_PREFIX_DST}/${IMG_2}:${TAG_2}" >&2 + docker tag "${IMG_PREFIX_DST}/${IMG_2}:${TAG_2}" "${IMG_PREFIX_DST}/${IMG_2}:${VER}" >&2 } push_image() { KEYWORD="${1:-second}"; docker image prune --force && docker images | sort; IMAGES=$(docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.CreatedSince}}" | grep "${KEYWORD}" | awk '{print $1 ":" $2}') ; - echo "$DOCKER_REGISTRY_PASSWORD" | docker login "$REGISTRY_DST" -u "$DOCKER_REGISTRY_USERNAME" --password-stdin ; + echo "$DOCKER_REGISTRY_PASSWORD" | docker login "${REGISTRY_DST}" -u "$DOCKER_REGISTRY_USERNAME" --password-stdin ; for IMG in $(echo "${IMAGES}" | tr " " "\n") ; do docker push "${IMG}"; @@ -80,13 +77,25 @@ clear_images() { remove_folder() { - sudo du -h -d1 "$1" || true ; - sudo rm -rf "$1" || true ; + for dir in "$@"; do + if [ -d "$dir" ]; then + echo "Removing folder: $dir" ; + sudo du -h -d1 "$dir" || true ; + sudo rm -rf "$dir" || true ; + else + echo "Warn: directory not found: $dir" ; + fi + done } free_diskspace() { - remove_folder /usr/share/dotnet - remove_folder /usr/local/lib/android - # remove_folder /var/lib/docker - df -h + remove_folder /usr/share/dotnet ; # /usr/local/lib/android /var/lib/docker + df -h ; +} + +setup_github_actions() { + [ ! -f /etc/docker/daemon.json ] && sudo tee /etc/docker/daemon.json > /dev/null <<< '{}' ; + jq '.experimental=true | ."data-root"="/mnt/docker"' /etc/docker/daemon.json > /tmp/daemon.json && sudo mv /tmp/daemon.json /etc/docker/ ; + ( sudo service docker restart || true ) && cat /etc/docker/daemon.json && docker info ; } +[ "$GITHUB_ACTIONS" = "true" ] && echo "Running in GitHub Actions and Setup Env: $(setup_github_actions)" From 42f725a5396b3a610d04bd4fe1d0838d4b1cd655 Mon Sep 17 00:00:00 2001 From: haobibo Date: Thu, 12 Mar 2026 03:02:55 +0800 Subject: [PATCH 12/12] chore: update file permissions for entrypoint and setup scripts --- docker_nocobase/work/docker-entrypoint.sh | 0 docker_nocobase/work/script-setup-nocobase.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 docker_nocobase/work/docker-entrypoint.sh mode change 100644 => 100755 docker_nocobase/work/script-setup-nocobase.sh diff --git a/docker_nocobase/work/docker-entrypoint.sh b/docker_nocobase/work/docker-entrypoint.sh old mode 100644 new mode 100755 diff --git a/docker_nocobase/work/script-setup-nocobase.sh b/docker_nocobase/work/script-setup-nocobase.sh old mode 100644 new mode 100755