formbricks (latest)
Published 2026-08-05 01:25:24 +02:00 by hicham
Installation
docker pull git.hicham.party/hicham/formbricks:latestsha256:42725f3bfdd46451312dd8a292152a4a557403d29725adb053287b13ef516975Image layers
| ADD alpine-minirootfs-3.23.5-x86_64.tar.gz / # buildkit |
| CMD ["/bin/sh"] |
| ENV NODE_VERSION=24.19.0 |
| RUN /bin/sh -c addgroup -g 1000 node && adduser -u 1000 -G node -s /bin/sh -D node && apk add --no-cache libstdc++ && apk add --no-cache --virtual .build-deps curl && ARCH= OPENSSL_ARCH='linux*' && alpineArch="$(apk --print-arch)" && case "${alpineArch##*-}" in x86_64) ARCH='x64' CHECKSUM="ebcb19941bf6a34ada2141727ffda66fb2a4bf315f5c02c8f1fc9e48a2045e06" OPENSSL_ARCH=linux-x86_64;; aarch64) OPENSSL_ARCH=linux-aarch64;; s390x) OPENSSL_ARCH=linux-s390x;; *) ;; esac && if [ -n "${CHECKSUM}" ]; then set -eu; curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && ln -s /usr/local/bin/node /usr/local/bin/nodejs; else echo "Building from source" && apk add --no-cache --virtual .build-deps-full binutils-gold g++ gcc gnupg libgcc linux-headers make python3 py-setuptools && export GNUPGHOME="$(mktemp -d)" && for key in 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xf "node-v$NODE_VERSION.tar.xz" && cd "node-v$NODE_VERSION" && ./configure && make -j$(getconf _NPROCESSORS_ONLN) V= && make install && apk del .build-deps-full && cd .. && rm -Rf "node-v$NODE_VERSION" && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; fi && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; && apk del .build-deps && node --version && npm --version && rm -rf /tmp/* # buildkit |
| ENV YARN_VERSION=1.22.22 |
| RUN /bin/sh -c apk add --no-cache --virtual .build-deps-yarn curl gnupg tar && export GNUPGHOME="$(mktemp -d)" && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && gpgconf --kill all && rm -rf "$GNUPGHOME" && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && apk del .build-deps-yarn && yarn --version && rm -rf /tmp/* # buildkit |
| COPY docker-entrypoint.sh /usr/local/bin/ # buildkit |
| ENTRYPOINT ["docker-entrypoint.sh"] |
| CMD ["node"] |
| RUN /bin/sh -c apk update && apk upgrade --no-cache && rm -rf /usr/local/lib/node_modules/npm && rm -f /usr/local/bin/npm /usr/local/bin/npx && addgroup -S nextjs && adduser -S -u 1001 -G nextjs nextjs # buildkit |
| WORKDIR /home/nextjs |
| COPY /app/apps/web/.next/standalone ./ # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./ && chmod -R 755 ./ # buildkit |
| COPY /app/apps/web/next.config.mjs . # buildkit |
| RUN /bin/sh -c chmod 644 ./next.config.mjs # buildkit |
| COPY /app/apps/web/package.json . # buildkit |
| RUN /bin/sh -c chmod 644 ./package.json # buildkit |
| COPY /app/apps/web/dist/docker/validate-env.mjs ./validate-env.mjs # buildkit |
| RUN /bin/sh -c chown nextjs:nextjs ./validate-env.mjs && chmod 444 ./validate-env.mjs # buildkit |
| COPY /app/prisma.config.mjs ./prisma.config.mjs # buildkit |
| RUN /bin/sh -c chmod 644 ./prisma.config.mjs # buildkit |
| COPY /app/apps/web/.next/static ./apps/web/.next/static # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./apps/web/.next/static && chmod -R 755 ./apps/web/.next/static # buildkit |
| COPY /app/apps/web/public ./apps/web/public # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./apps/web/public && chmod -R 755 ./apps/web/public # buildkit |
| RUN /bin/sh -c mkdir -p ./packages/database/migrations && chown -R nextjs:nextjs ./packages/database # buildkit |
| COPY /app/packages/database/package.json ./packages/database/package.json # buildkit |
| RUN /bin/sh -c chown nextjs:nextjs ./packages/database/package.json && chmod 644 ./packages/database/package.json # buildkit |
| COPY /app/packages/database/schema ./packages/database/schema # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./packages/database/schema && chmod -R 755 ./packages/database/schema # buildkit |
| COPY /app/packages/database/prisma.config.ts ./packages/database/prisma.config.ts # buildkit |
| RUN /bin/sh -c chown nextjs:nextjs ./packages/database/prisma.config.ts && chmod 644 ./packages/database/prisma.config.ts # buildkit |
| COPY /app/packages/database/dist ./packages/database/dist # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./packages/database/dist && chmod -R 755 ./packages/database/dist # buildkit |
| COPY /app/packages/database/generated ./packages/database/generated # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./packages/database/generated && chmod -R 755 ./packages/database/generated # buildkit |
| COPY /app/node_modules/@prisma ./node_modules/@prisma # buildkit |
| RUN /bin/sh -c chown -R nextjs:nextjs ./node_modules/@prisma && chmod -R 755 ./node_modules/@prisma # buildkit |
| COPY /app/node_modules/prisma ./node_modules/prisma # buildkit |
| RUN /bin/sh -c mkdir -p ./node_modules/.bin && ln -sf ../prisma/build/index.js ./node_modules/.bin/prisma && chown -R nextjs:nextjs ./node_modules/prisma ./node_modules/.bin && chmod -R 755 ./node_modules/prisma # buildkit |
| COPY /app/node_modules/dotenv ./node_modules/dotenv # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/dotenv # buildkit |
| COPY /app/node_modules/@standard-schema ./node_modules/@standard-schema # buildkit |
| COPY /app/node_modules/c12 ./node_modules/c12 # buildkit |
| COPY /app/node_modules/confbox ./node_modules/confbox # buildkit |
| COPY /app/node_modules/deepmerge-ts ./node_modules/deepmerge-ts # buildkit |
| COPY /app/node_modules/defu ./node_modules/defu # buildkit |
| COPY /app/node_modules/destr ./node_modules/destr # buildkit |
| COPY /app/node_modules/effect ./node_modules/effect # buildkit |
| COPY /app/node_modules/empathic ./node_modules/empathic # buildkit |
| COPY /app/node_modules/exsolve ./node_modules/exsolve # buildkit |
| COPY /app/node_modules/fast-check ./node_modules/fast-check # buildkit |
| COPY /app/node_modules/giget ./node_modules/giget # buildkit |
| COPY /app/node_modules/jiti ./node_modules/jiti # buildkit |
| COPY /app/node_modules/ohash ./node_modules/ohash # buildkit |
| COPY /app/node_modules/pathe ./node_modules/pathe # buildkit |
| COPY /app/node_modules/perfect-debounce ./node_modules/perfect-debounce # buildkit |
| COPY /app/node_modules/pkg-types ./node_modules/pkg-types # buildkit |
| COPY /app/node_modules/pure-rand ./node_modules/pure-rand # buildkit |
| COPY /app/node_modules/rc9 ./node_modules/rc9 # buildkit |
| COPY /app/node_modules/cross-spawn ./node_modules/cross-spawn # buildkit |
| COPY /app/node_modules/foreground-child ./node_modules/foreground-child # buildkit |
| COPY /app/node_modules/get-port-please ./node_modules/get-port-please # buildkit |
| COPY /app/node_modules/graceful-fs ./node_modules/graceful-fs # buildkit |
| COPY /app/node_modules/grammex ./node_modules/grammex # buildkit |
| COPY /app/node_modules/graphmatch ./node_modules/graphmatch # buildkit |
| COPY /app/node_modules/isexe ./node_modules/isexe # buildkit |
| COPY /app/node_modules/path-key ./node_modules/path-key # buildkit |
| COPY /app/node_modules/proper-lockfile ./node_modules/proper-lockfile # buildkit |
| COPY /app/node_modules/remeda ./node_modules/remeda # buildkit |
| COPY /app/node_modules/retry ./node_modules/retry # buildkit |
| COPY /app/node_modules/shebang-command ./node_modules/shebang-command # buildkit |
| COPY /app/node_modules/shebang-regex ./node_modules/shebang-regex # buildkit |
| COPY /app/node_modules/signal-exit ./node_modules/signal-exit # buildkit |
| COPY /app/node_modules/std-env ./node_modules/std-env # buildkit |
| COPY /app/node_modules/valibot ./node_modules/valibot # buildkit |
| COPY /app/node_modules/which ./node_modules/which # buildkit |
| COPY /app/node_modules/zeptomatch ./node_modules/zeptomatch # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/@standard-schema ./node_modules/c12 ./node_modules/confbox ./node_modules/deepmerge-ts ./node_modules/defu ./node_modules/destr ./node_modules/effect ./node_modules/empathic ./node_modules/exsolve ./node_modules/fast-check ./node_modules/giget ./node_modules/jiti ./node_modules/ohash ./node_modules/pathe ./node_modules/perfect-debounce ./node_modules/pkg-types ./node_modules/pure-rand ./node_modules/rc9 ./node_modules/cross-spawn ./node_modules/foreground-child ./node_modules/get-port-please ./node_modules/graceful-fs ./node_modules/grammex ./node_modules/graphmatch ./node_modules/isexe ./node_modules/path-key ./node_modules/proper-lockfile ./node_modules/remeda ./node_modules/retry ./node_modules/shebang-command ./node_modules/shebang-regex ./node_modules/signal-exit ./node_modules/std-env ./node_modules/valibot ./node_modules/which ./node_modules/zeptomatch # buildkit |
| COPY /app/node_modules/pg ./node_modules/pg # buildkit |
| COPY /app/node_modules/pg-connection-string ./node_modules/pg-connection-string # buildkit |
| COPY /app/node_modules/pg-cloudflare ./node_modules/pg-cloudflare # buildkit |
| COPY /app/node_modules/pg-int8 ./node_modules/pg-int8 # buildkit |
| COPY /app/node_modules/pg-pool ./node_modules/pg-pool # buildkit |
| COPY /app/node_modules/pg-protocol ./node_modules/pg-protocol # buildkit |
| COPY /app/node_modules/pg-types ./node_modules/pg-types # buildkit |
| COPY /app/node_modules/pgpass ./node_modules/pgpass # buildkit |
| COPY /app/node_modules/postgres-array ./node_modules/postgres-array # buildkit |
| COPY /app/node_modules/postgres-bytea ./node_modules/postgres-bytea # buildkit |
| COPY /app/node_modules/postgres-date ./node_modules/postgres-date # buildkit |
| COPY /app/node_modules/postgres-interval ./node_modules/postgres-interval # buildkit |
| COPY /app/node_modules/split2 ./node_modules/split2 # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/pg ./node_modules/pg-connection-string ./node_modules/pg-cloudflare ./node_modules/pg-int8 ./node_modules/pg-pool ./node_modules/pg-protocol ./node_modules/pg-types ./node_modules/pgpass ./node_modules/postgres-array ./node_modules/postgres-bytea ./node_modules/postgres-date ./node_modules/postgres-interval ./node_modules/split2 # buildkit |
| COPY /app/node_modules/@paralleldrive/cuid2 ./node_modules/@paralleldrive/cuid2 # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/@paralleldrive/cuid2 # buildkit |
| COPY /app/packages/database/node_modules/uuid ./node_modules/uuid # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/uuid && node --input-type=module -e " import { v7 } from 'uuid'; if (typeof v7 !== 'function') { throw new Error('uuid v7 missing in runtime image'); }" # buildkit |
| COPY /app/node_modules/@noble/hashes ./node_modules/@noble/hashes # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/@noble/hashes # buildkit |
| COPY /app/node_modules/zod ./node_modules/zod # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/zod # buildkit |
| COPY /app/node_modules/pino ./node_modules/pino # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/pino # buildkit |
| COPY /app/node_modules/pino-opentelemetry-transport ./node_modules/pino-opentelemetry-transport # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/pino-opentelemetry-transport # buildkit |
| COPY /app/node_modules/pino-abstract-transport ./node_modules/pino-abstract-transport # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/pino-abstract-transport # buildkit |
| COPY /app/node_modules/otlp-logger ./node_modules/otlp-logger # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/otlp-logger # buildkit |
| COPY /app/node_modules/@opentelemetry/sdk-logs ./node_modules/@opentelemetry/sdk-logs # buildkit |
| COPY /app/node_modules/@opentelemetry/exporter-logs-otlp-proto ./node_modules/@opentelemetry/exporter-logs-otlp-proto # buildkit |
| RUN /bin/sh -c chmod -R 755 ./node_modules/@opentelemetry/sdk-logs ./node_modules/@opentelemetry/exporter-logs-otlp-proto && OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 node -e " const pino = require('pino'); const target = process.cwd() + '/node_modules/pino-opentelemetry-transport/lib/pino-opentelemetry-transport.js'; process.on('uncaughtException', (error) => { console.error(error); process.exit(1); }); process.on('unhandledRejection', (error) => { console.error(error); process.exit(1); }); const logger = pino({ transport: { target, options: { loggerName: 'formbricks-build-smoke', serviceVersion: '0.0.0', resourceAttributes: { 'service.name': 'formbricks-build-smoke', 'service.version': '0.0.0' } } } }); logger[pino.symbols.streamSym]?.on?.('error', (error) => { console.error(error); process.exit(1); }); logger.info('pino otel transport smoke check'); setTimeout(() => process.exit(0), 1000); " # buildkit |
| COPY /app/apps/web/scripts/docker/next-start.sh /home/nextjs/start.sh # buildkit |
| RUN /bin/sh -c chown nextjs:nextjs /home/nextjs/start.sh && chmod +x /home/nextjs/start.sh # buildkit |
| EXPOSE [3000/tcp] |
| ENV HOSTNAME=0.0.0.0 |
| USER nextjs |
| RUN /bin/sh -c mkdir -p /home/nextjs/apps/web/uploads/ && mkdir -p /home/nextjs/apps/web/saml-connection # buildkit |
| VOLUME [/home/nextjs/apps/web/uploads/] |
| VOLUME [/home/nextjs/apps/web/saml-connection] |
| CMD ["/home/nextjs/start.sh"] |