FROM node:22-bookworm AS app-builder ARG VERDACCIO_URL=http://host.docker.internal:10104/ ARG APPEND_PRESET_LOCAL_PLUGINS ARG BEFORE_PACK_NOCOBASE="ls -l" ARG PLUGINS_DIRS ARG USE_ALIYUN_MIRROR=0 ENV PLUGINS_DIRS=${PLUGINS_DIRS} RUN set -eux; \ rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; \ if [ "$USE_ALIYUN_MIRROR" = "1" ]; then \ printf '%s\n' \ 'deb http://mirrors.aliyun.com/debian bookworm main contrib non-free non-free-firmware' \ 'deb http://mirrors.aliyun.com/debian bookworm-updates main contrib non-free non-free-firmware' \ 'deb http://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free non-free-firmware' \ > /etc/apt/sources.list; \ else \ printf '%s\n' \ 'deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware' \ 'deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware' \ 'deb http://deb.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware' \ > /etc/apt/sources.list; \ fi; \ apt-get update && apt-get install -y jq expect SHELL ["/bin/bash", "-c"] RUN expect < /etc/apt/sources.list; \ PGDG_MIRROR='http://mirrors.aliyun.com/postgresql/repos/apt'; \ else \ printf '%s\n' \ 'deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware' \ 'deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware' \ 'deb http://deb.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware' \ > /etc/apt/sources.list; \ PGDG_MIRROR='http://apt.postgresql.org/pub/repos/apt'; \ fi; \ apt-get update; \ apt-get install -y --no-install-recommends wget gnupg ca-certificates; \ echo "deb [signed-by=/usr/share/keyrings/pgdg.asc] ${PGDG_MIRROR} bookworm-pgdg main" > /etc/apt/sources.list.d/pgdg.list; \ wget --quiet -O /usr/share/keyrings/pgdg.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc; \ wget --quiet -O /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key; \ gpg --batch --yes --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg /tmp/nginx_signing.key; \ printf '%s\n' \ 'deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/debian bookworm nginx' \ > /etc/apt/sources.list.d/nginx.list; \ apt-get update; \ apt-get install -y --no-install-recommends \ "nginx=${NGINX_VERSION}" \ libaio1 \ postgresql-client-17 \ libfreetype6 \ fontconfig \ libgssapi-krb5-2 \ libncurses6 \ fonts-liberation; \ if [ "$INSTALL_POSTGRES_16_CLIENT" = "1" ]; then \ apt-get install -y --no-install-recommends postgresql-client-16; \ fi; \ if [ "$INSTALL_CJK_FONTS" = "1" ]; then \ apt-get install -y --no-install-recommends fonts-noto-cjk; \ fi; \ nginx -v; \ mysql --version; \ mysqldump --version; \ apt-get purge -y --auto-remove wget gnupg dirmngr; \ rm -rf \ /etc/apt/sources.list.d/nginx.list \ /tmp/nginx_signing.key \ /usr/share/keyrings/nginx-archive-keyring.gpg \ /var/lib/apt/lists/* \ /usr/share/doc/* \ /usr/share/man/* RUN rm -rf /etc/nginx/conf.d/default.conf COPY ./docker/nocobase/nocobase-docs.conf /etc/nginx/conf.d/nocobase-docs.conf ADD nocobase.tar.gz /app/nocobase/ COPY --from=docs-archive /out/ /app/ WORKDIR /app/nocobase RUN ln -sf /app/nocobase/node_modules/.bin/nb /usr/local/bin/nb && \ mkdir -p /app/nocobase/docs /app/nocobase/storage/uploads /app/nocobase/node_modules/@nocobase/app/dist/client && \ touch /app/nocobase/node_modules/@nocobase/app/dist/client/index.html && \ echo "$COMMIT_HASH" > /app/commit_hash.txt COPY ./docker/nocobase/docker-entrypoint.sh /app/ RUN chmod +x /app/docker-entrypoint.sh CMD ["/app/docker-entrypoint.sh"]