Skip to content

Improve docker#1027

Merged
belgattitude merged 4 commits intomainfrom
improve-docker
Mar 24, 2026
Merged

Improve docker#1027
belgattitude merged 4 commits intomainfrom
improve-docker

Conversation

@belgattitude
Copy link
Copy Markdown
Owner

@belgattitude belgattitude commented Mar 23, 2026

Summary by CodeRabbit

  • Chores
    • Bumped various dev/build dependencies to patch versions across the repo.
    • Improved Docker build setup: added/expanded ignore rules, new Alpine compose config, renamed compose project/service, and refined multi-stage builds for smaller images.
    • Added npm scripts to simplify building example images.
    • Adjusted example environment defaults for telemetry/exporter endpoint and standardized timezone handling in container images.

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
flowblade-next-app Ready Ready Preview Mar 24, 2026 9:26am

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 23, 2026

⚠️ No Changeset found

Latest commit: a629d67

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 23, 2026

📝 Walkthrough

Walkthrough

Adds Dockerignore files and broad Docker/Docker Compose/Dockerfile refactors for the Next.js example, updates corepack installation and build stages, standardizes Alpine/UTC settings, adds Docker build scripts, patches many devDependency versions (primarily Vitest), and updates .yarnrc.yml allowlist and otel image tag.

Changes

Cohort / File(s) Summary
Root config & infra
\.dockerignore, \.yarnrc\.yml, docker/otel-lgtm/compose\.yml
Add root .dockerignore; add @oxc-project/* to npmPreapprovedPackages; bump grafana/otel-lgtm image tag 0.21.0 → 0.22.0.
Next.js Docker files & docs
examples/apps/nextjs-app/docker/.dockerignore, examples/apps/nextjs-app/docker/Dockerfile, examples/apps/nextjs-app/docker/Dockerfile.alpine, examples/apps/nextjs-app/docker/docker-compose.yml, examples/apps/nextjs-app/docker/docker-compose.alpine.yml, examples/apps/nextjs-app/docker/README.md
Refactor multi-stage build target names, add COREPACK_VERSION arg and install corepack via npm i -g corepack, adjust cache/cleanup steps, tighten Yarn build cache mount, change timezone to UTC in Alpine flows, add Alpine compose file, rename service/project keys, and update README to use docker buildx bake.
Next.js app config & scripts
examples/apps/nextjs-app/.env, examples/apps/nextjs-app/package.json, examples/apps/nextjs-app/turbo.jsonc
Clear OTEL_EXPORTER_OTLP_ENDPOINT; add docker-build and docker-build-alpine npm scripts; bump multiple runtime/dev dependencies; add dependsOn: [] to turbo build task.
Example apps & shared packages (dependency bumps)
examples/apps/fastify-app/package.json, examples/shared/*/package.json
Patch bumps for @httpx/*, hono, Storybook, and Vitest-related packages across example apps and shared packages.
Monorepo packages (dev tooling bumps)
packages/*/package.json (e.g., packages/core, packages/source-*, packages/sql-tag*, packages/sqlduck)
Unified Vitest-related devDependency updates (4.1.0 → 4.1.1 or equivalent coverage flavors) across multiple packages.
Examples nextjs Docker compose additions
examples/apps/nextjs-app/docker/docker-compose.alpine.yml
New compose file defining app-alpine service using the Alpine Dockerfile with bridge network and port mapping.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰
I nibble bytes and hop through stages bright,
Corepack installed, build targets take flight.
Dependencies nudged, Dockerfiles aligned,
UTC clocks set, cleaner caches I find.
A tiny rabbit cheers the build tonight.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The PR title 'Improve docker' is too vague and generic. While the changeset does include Docker-related modifications, the title does not convey specific information about what Docker improvements were made or highlight the most important changes. Use a more descriptive title that specifies the key Docker improvements, such as 'Refactor Docker build configuration with Alpine support and dependency optimization' or 'Add Docker build optimization and Alpine multi-stage Dockerfile'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch improve-docker

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

# Conflicts:
#	examples/shared/base-ui/package.json
#	examples/shared/duckb-openfoodfact/package.json
#	yarn.lock
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Mar 23, 2026

Deploying flowblade with  Cloudflare Pages  Cloudflare Pages

Latest commit: ffd92ce
Status: ✅  Deploy successful!
Preview URL: https://c608ae11.flowblade.pages.dev
Branch Preview URL: https://improve-docker.flowblade.pages.dev

View logs

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new bot commented Mar 23, 2026

Open in StackBlitz

@flowblade/core

npm i https://pkg.pr.new/@flowblade/core@1027

@flowblade/source-duckdb

npm i https://pkg.pr.new/@flowblade/source-duckdb@1027

@flowblade/source-kysely

npm i https://pkg.pr.new/@flowblade/source-kysely@1027

@flowblade/sql-tag

npm i https://pkg.pr.new/@flowblade/sql-tag@1027

@flowblade/sql-tag-format

npm i https://pkg.pr.new/@flowblade/sql-tag-format@1027

@flowblade/sqlduck

npm i https://pkg.pr.new/@flowblade/sqlduck@1027

commit: a629d67

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Mar 23, 2026

Greptile Summary

This PR improves the Docker setup for the nextjs-app example in the monorepo: it renames Dockerfile stages to clearer names (prepare/builder/runner), adds a root-level .dockerignore to reduce build context, upgrades the OTEL LGTM sidecar to 0.22.0, clears a hard-coded local OTEL endpoint from .env, and performs a broad sweep of patch/minor dependency bumps across all packages (vitest 4.1.1, kysely 0.28.14, next 16.2.1, tailwindcss 4.2.2, etc.).

Key changes:

  • Root .dockerignore added to exclude node_modules, turbo/cache artifacts, dist, and eslint cache from the build context.
  • Dockerfile (debian): stages renamed, npm i -g corepack made explicit, apt cache cleaned, YARN_ENABLE_TELEMETRY=false and YARN_ENABLE_CONSTRAINTS_CHECKS=false added, yarn cache mount upgraded to sharing=locked.
  • docker-compose.yml: project/service renamed; DOCKER_BUILDKIT=1 added as a runtime env var — this has no effect at runtime and appears to be a mistake.
  • Dockerfile.alpine: TZ corrected to Etc/UTC, explicit corepack install, but runner stage still installs corepack (inconsistent with the Debian runner which removed it) and is missing the two new Yarn env vars added to the Debian variant.
  • Dependency updates: routine patch bumps across all packages in the monorepo.

Confidence Score: 3/5

  • Safe to merge with minor issues — a misplaced DOCKER_BUILDKIT env var and Alpine/Debian inconsistencies should be cleaned up, but nothing blocks functionality.
  • The Debian Dockerfile improvements are solid. The main concern is DOCKER_BUILDKIT=1 set as a runtime environment variable in docker-compose.yml, which is functionally a no-op but signals a misunderstanding. The Alpine Dockerfile has two inconsistencies vs. the Debian one (extra corepack in runner, missing Yarn telemetry/constraints env vars). All package bumps are routine patch/minor updates with no architectural concerns.
  • examples/apps/nextjs-app/docker/docker-compose.yml (DOCKER_BUILDKIT misplacement) and examples/apps/nextjs-app/docker/Dockerfile.alpine (runner corepack + missing Yarn env vars)

Important Files Changed

Filename Overview
examples/apps/nextjs-app/docker/Dockerfile Stage renames (prepare/builder/runner), explicit corepack install via npm, apt cache cleanup, YARN_ENABLE_TELEMETRY/CONSTRAINTS_CHECKS env vars added, cache sharing=locked — solid improvements overall.
examples/apps/nextjs-app/docker/Dockerfile.alpine TZ corrected to Etc/UTC and explicit corepack install added, but runner stage unnecessarily installs corepack (inconsistent with Debian Dockerfile) and missing YARN_ENABLE_TELEMETRY/CONSTRAINTS_CHECKS env vars.
examples/apps/nextjs-app/docker/docker-compose.yml Renamed to flowblade-example-nextjs / app-debian, but adds DOCKER_BUILDKIT=1 as a runtime environment variable — this has no effect at container runtime and is only meaningful as a host build-time CLI directive.
examples/apps/nextjs-app/docker/docker-compose.alpine.yml New compose file for the Alpine variant; clean and consistent with the Debian compose file structure.
.dockerignore New root-level .dockerignore correctly excludes node_modules, turbo/.cache artifacts, built output directories, and eslint cache to reduce build context size.
examples/apps/nextjs-app/turbo.jsonc Added dependsOn: [] to the build task to break the dependency chain, allowing builds to start without waiting for workspace dependencies — intentional for the Docker build context per the inline comment.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Build Context: monorepo root] -->|.dockerignore filters out node_modules/.turbo/.cache/dist| B[Stage 1: prepare]
    B -->|apt install git jq\nnpm i -g corepack\ncorepack enable| C[turbo prune --scope=nextjs-app]
    C -->|out/nextjs-app/json + yarn.lock| D[Stage 2: builder]
    D -->|yarn install --inline-builds\ncache mount sharing=locked| E[yarn turbo build --filter=nextjs-app]
    E -->|.next/standalone + static + public| F[Stage 3: runner]
    F -->|node:debian-slim\nbash + tzdata only\nnextjs:nodejs user| G[CMD: node server.js]

    subgraph Alpine Variant
        H[Stage 1: app-builder] -->|apk add git jq\nnpm i -g corepack| I[turbo prune]
        I --> J[Stage 2: app-installer]
        J -->|yarn install| K[turbo build]
        K --> L[Stage 3: app-runner]
        L -->|apk add tzdata\n⚠️ also installs corepack\nnot needed at runtime| M[CMD: node server.js]
    end
Loading

Comments Outside Diff (1)

  1. examples/apps/nextjs-app/docker/Dockerfile.alpine, line 44-52 (link)

    P2 Missing Yarn env improvements from Debian Dockerfile

    The Debian Dockerfile received two new env vars in the builder stage (YARN_ENABLE_TELEMETRY=false and YARN_ENABLE_CONSTRAINTS_CHECKS=false) that are absent here. For consistency and the same build-time benefits (no telemetry noise, no constraint checks slowing the install), these should be added to the Alpine builder stage as well:

Reviews (1): Last reviewed commit: "Merge branch 'main' into improve-docker" | Re-trigger Greptile

RUN apk add --no-cache tzdata bash && corepack enable
ENV TZ=Etc/UTC

RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/* && npm i -g corepack && corepack enable
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Unnecessary corepack install in runner stage

The runner stage installs and enables corepack (npm i -g corepack && corepack enable), but corepack is a package manager bootstrapper — it is only needed during dependency installation and build, not when running the final standalone Next.js output. The Debian Dockerfile correctly omits this in its runner stage (the equivalent line is commented out there).

This adds unnecessary layer weight and inconsistency between the two Dockerfiles. Consider aligning with the Debian runner:

Suggested change
RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/* && npm i -g corepack && corepack enable
RUN apk add --no-cache tzdata && rm -rf /var/cache/apk/*

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (2)
examples/apps/nextjs-app/docker/.dockerignore (1)

1-2: Commented ignore rules are inert; make intent explicit.

Right now only node_modules is active. If these are intended fallback exclusions, they should be uncommented; otherwise this file can mislead future edits.

♻️ Suggested cleanup
-# this file should won't be read unless it exists in the
-# context directory specified in the docker compose file
+# This file is only used when this directory is the Docker build context.

 node_modules
-#**/.turbo
-#**/.cache
-#**/apps/*/.next
-#**/packages/*/dist
-#**/packages/*/docs
-#**/.eslintcache
+**/.turbo
+**/.cache
+**/apps/*/.next
+**/packages/*/dist
+**/packages/*/docs
+**/.eslintcache

Also applies to: 5-10

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/.dockerignore` around lines 1 - 2, The
.dockerignore currently contains only commented lines which can mislead future
edits—either make the exclusions explicit or remove the inert comments: decide
whether the commented patterns (e.g., the fallback exclusions implied by the
commented lines at the top of the .dockerignore) should be active; if yes,
uncomment them so entries like node_modules are actual ignore rules, or if not,
delete the commented lines and add a short clarifying comment stating that only
the listed patterns are intentionally ignored. Update the file so the intent is
unambiguous (uncomment patterns you want enforced or remove the comments and add
a clear header comment).
.dockerignore (1)

4-10: Broaden context exclusions for better Docker build performance.

This misses common heavy paths: nested workspace node_modules and .git.

♻️ Suggested patch
-node_modules
+node_modules
+**/node_modules
+.git
 **/.turbo
 **/.cache
 **/apps/*/.next
 **/packages/*/dist
 **/packages/*/docs
 **/.eslintcache
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.dockerignore around lines 4 - 10, The .dockerignore currently excludes
top-level node_modules and some build caches but misses nested workspace
dependencies and git metadata; update .dockerignore to also exclude nested
workspace node_modules (e.g., add patterns like **/node_modules) and repository
VCS data (e.g., .git and/or **/.git) alongside the existing entries
(node_modules, **/.turbo, **/.cache, **/apps/*/.next, **/packages/*/dist,
**/packages/*/docs, **/.eslintcache) so Docker build context is smaller and
ignores workspace deps and git objects.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@examples/apps/nextjs-app/docker/docker-compose.yml`:
- Around line 1-3: The README's Docker commands still reference the old
project/service names; update the examples in the README to use the new compose
project name "flowblade-example-nextjs" and service name "app-debian" so
copy-paste commands (docker-compose up/down, exec, logs, etc.) match the
docker-compose.yml. Search for occurrences of the old names in the README and
replace them with "flowblade-example-nextjs" for the compose project and
"app-debian" for the service in all command examples.
- Around line 13-14: Remove the DOCKER_BUILDKIT=1 entry from the service
environment in the docker-compose.yml: delete the line that sets "-
DOCKER_BUILDKIT=1" under the environment block so the service runtime
environment no longer contains that build-time flag (BuildKit should be enabled
outside compose or via daemon/Compose v2 instead).

In `@examples/apps/nextjs-app/docker/Dockerfile`:
- Around line 17-18: Remove the redundant global install "npm i -g corepack"
from the Dockerfile and rely on the bundled Corepack by keeping "corepack
enable"; then add a "packageManager" entry to
examples/apps/nextjs-app/package.json (e.g. "packageManager":
"yarn@x.y.z+sha.hash") to pin the exact Yarn release for reproducible
builds—alternatively, if you must pin Corepack itself, replace the global
install with an explicit pinned Corepack installation and still add the
"packageManager" field in package.json to lock Yarn.

In `@examples/apps/nextjs-app/docker/Dockerfile.alpine`:
- Line 11: The Dockerfile runtime stage installs Corepack via "npm i -g
corepack" (seen in the RUN that also runs "corepack enable"), which is
unnecessary and non-deterministic; remove the "npm i -g corepack" invocation and
just run "corepack enable" (relying on the Node 24 Alpine bundled Corepack), and
also remove any Corepack installation/enablement in the runner stage (the
install at line 93) since the runtime/runner stages don't need to install
package managers.

In `@examples/apps/nextjs-app/docker/README.md`:
- Around line 29-31: Update the "equivalent to" docker run command so the image
name matches the new exported tag: replace the old image name
"flowblade-nextjs-app-nextjs-app" with "flowblade-example-nextjs-app" in the
line that reads "docker run --rm -it --entrypoint bash
flowblade-nextjs-app-nextjs-app" (also update the other occurrence that still
references the old name) so the example aligns with the "docker compose run
nextjs-app bash" and the later mention of "flowblade-example-nextjs-app".

In `@examples/apps/nextjs-app/package.json`:
- Line 42: The dependency `@duckdb/duckdb-wasm` is pinned to a dev prerelease
(1.33.1-dev20.0); update package.json to use a stable release (e.g., the latest
1.33.x stable or revert to 1.31.0) or explicitly validate compatibility with the
prerelease by running and confirming the duckdb-wasm-init.ts and
duck-wasm-test-panel.tsx flows (AsyncDuckDB instantiation, bundle selection, and
query execution) still behave correctly; if you keep the prerelease, add a clear
comment in package.json explaining why and include tests that exercise
AsyncDuckDB creation, bundle selection logic, and basic query execution to catch
any breaking changes.

---

Nitpick comments:
In @.dockerignore:
- Around line 4-10: The .dockerignore currently excludes top-level node_modules
and some build caches but misses nested workspace dependencies and git metadata;
update .dockerignore to also exclude nested workspace node_modules (e.g., add
patterns like **/node_modules) and repository VCS data (e.g., .git and/or
**/.git) alongside the existing entries (node_modules, **/.turbo, **/.cache,
**/apps/*/.next, **/packages/*/dist, **/packages/*/docs, **/.eslintcache) so
Docker build context is smaller and ignores workspace deps and git objects.

In `@examples/apps/nextjs-app/docker/.dockerignore`:
- Around line 1-2: The .dockerignore currently contains only commented lines
which can mislead future edits—either make the exclusions explicit or remove the
inert comments: decide whether the commented patterns (e.g., the fallback
exclusions implied by the commented lines at the top of the .dockerignore)
should be active; if yes, uncomment them so entries like node_modules are actual
ignore rules, or if not, delete the commented lines and add a short clarifying
comment stating that only the listed patterns are intentionally ignored. Update
the file so the intent is unambiguous (uncomment patterns you want enforced or
remove the comments and add a clear header comment).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 93c2ca0f-d779-4829-9809-fb9fa612824d

📥 Commits

Reviewing files that changed from the base of the PR and between f52d979 and ffd92ce.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (23)
  • .dockerignore
  • .yarnrc.yml
  • docker/otel-lgtm/compose.yml
  • examples/apps/fastify-app/package.json
  • examples/apps/nextjs-app/.env
  • examples/apps/nextjs-app/docker/.dockerignore
  • examples/apps/nextjs-app/docker/Dockerfile
  • examples/apps/nextjs-app/docker/Dockerfile.alpine
  • examples/apps/nextjs-app/docker/README.md
  • examples/apps/nextjs-app/docker/docker-compose.alpine.yml
  • examples/apps/nextjs-app/docker/docker-compose.yml
  • examples/apps/nextjs-app/package.json
  • examples/apps/nextjs-app/turbo.jsonc
  • examples/shared/base-auth/package.json
  • examples/shared/base-ui/package.json
  • examples/shared/db-sqlserver/package.json
  • examples/shared/duckb-openfoodfact/package.json
  • packages/core/package.json
  • packages/source-duckdb/package.json
  • packages/source-kysely/package.json
  • packages/sql-tag-format/package.json
  • packages/sql-tag/package.json
  • packages/sqlduck/package.json

Comment on lines +1 to +3
name: flowblade-example-nextjs
services:
nextjs-app:
app-debian:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update Docker README examples to match renamed service/project.

The compose rename to flowblade-example-nextjs / app-debian should be reflected in examples/apps/nextjs-app/docker/README.md commands to prevent broken copy-paste usage.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/docker-compose.yml` around lines 1 - 3, The
README's Docker commands still reference the old project/service names; update
the examples in the README to use the new compose project name
"flowblade-example-nextjs" and service name "app-debian" so copy-paste commands
(docker-compose up/down, exec, logs, etc.) match the docker-compose.yml. Search
for occurrences of the old names in the README and replace them with
"flowblade-example-nextjs" for the compose project and "app-debian" for the
service in all command examples.

# gcompat is required for duckdb neo to work
RUN apk add --no-cache git jq && corepack enable
# You might want to add gcompat for duckdb neo to work
RUN apk add --no-cache git jq && rm -rf /var/cache/apk/* && npm i -g corepack && corepack enable
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

For official Node.js 24 Alpine Docker images, what is the recommended deterministic approach for Corepack (bundled vs npm-installed), and which Corepack versions are compatible with Node 24?

💡 Result:

For official Node.js 24 Alpine Docker images, the bundled Corepack (included with Node.js 24) is the recommended deterministic approach. Run corepack enable to activate the shims for yarn and pnpm. This uses Corepack's predefined "Known Good Releases" for package managers, ensuring consistent versions across builds without network fetches after initial enablement (use corepack prepare for offline determinism). npm-installing Corepack (@latest, e.g., v0.34.6 as of 2026-01) is not recommended for determinism, as it may introduce version drift and requires extra layers/security considerations; the bundled version matches Node 24 exactly. All Corepack versions compatible with Node >=16.9.0 / >=14.19.0 work with Node 24, but use the bundled one matching Node 24's build.

Citations:


🏁 Script executed:

cat -n examples/apps/nextjs-app/docker/Dockerfile.alpine | head -100

Repository: belgattitude/flowblade

Length of output: 4074


Use bundled Corepack and remove npm-install from runtime stage.

Line 11 and Line 93 install Corepack via npm without version pinning, which makes builds non-deterministic. However, the correct fix is to rely on the bundled Corepack in Node.js 24 Alpine images instead of npm-installing it. Simply use corepack enable without the npm i -g corepack command—the bundled version is deterministic by design and matches the Node version exactly. Additionally, remove Corepack entirely from line 93 (runner stage) since the runtime stage doesn't execute package-manager commands.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/Dockerfile.alpine` at line 11, The Dockerfile
runtime stage installs Corepack via "npm i -g corepack" (seen in the RUN that
also runs "corepack enable"), which is unnecessary and non-deterministic; remove
the "npm i -g corepack" invocation and just run "corepack enable" (relying on
the Node 24 Alpine bundled Corepack), and also remove any Corepack
installation/enablement in the runner stage (the install at line 93) since the
runtime/runner stages don't need to install package managers.

Comment on lines +29 to 31
docker compose run nextjs-app bash
# equivalent to
docker run --rm -it --entrypoint bash flowblade-nextjs-app-nextjs-app
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Align the “equivalent” image name with the new exported image tag.

Line 31 still references the old image naming, while Line 37 now uses flowblade-example-nextjs-app. This makes the “equivalent to” command misleading.

🛠️ Suggested doc fix
-docker run --rm -it --entrypoint bash flowblade-nextjs-app-nextjs-app
+docker run --rm -it --entrypoint bash flowblade-example-nextjs-app

Also applies to: 37-37

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/README.md` around lines 29 - 31, Update the
"equivalent to" docker run command so the image name matches the new exported
tag: replace the old image name "flowblade-nextjs-app-nextjs-app" with
"flowblade-example-nextjs-app" in the line that reads "docker run --rm -it
--entrypoint bash flowblade-nextjs-app-nextjs-app" (also update the other
occurrence that still references the old name) so the example aligns with the
"docker compose run nextjs-app bash" and the later mention of
"flowblade-example-nextjs-app".

},
"dependencies": {
"@duckdb/duckdb-wasm": "1.31.0",
"@duckdb/duckdb-wasm": "1.33.1-dev20.0",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Confirm declared version
rg -n "\"@duckdb/duckdb-wasm\"" examples/apps/nextjs-app/package.json -C1

# Inspect DuckDB WASM API touchpoints that are sensitive to SDK changes
rg -n "from '@duckdb/duckdb-wasm'|AsyncDuckDB|DuckDBConfig|getJsDelivrBundles|selectBundle|instantiate\\(|AsyncDuckDBConnection|\\.connect\\(|\\.query\\(" \
  examples/apps/nextjs-app/src -C2

Repository: belgattitude/flowblade

Length of output: 8440


🌐 Web query:

What are the documented breaking or behavioral changes between @duckdb/duckdb-wasm 1.31.0 and 1.33.1-dev20.0?

💡 Result:

No documented breaking or behavioral changes specific to @duckdb/duckdb-wasm between versions 1.31.0 and 1.33.1-dev20.0 were found in official release notes or changelogs. The duckdb-wasm releases (1.31.0 based on DuckDB v1.4.0, 1.32.0, 1.33.0 with no differences from 1.32.0) provide minimal details, primarily noting underlying DuckDB core updates and minor fixes without explicit breaking changes for WASM. Behavioral changes, if any, would stem from DuckDB core updates (e.g., v1.4.0 to v1.5.0), but no WASM-specific behavioral shifts are documented. Check the GitHub repo diffs for v1.31.0...1.33.1-dev20.0 or DuckDB core release notes for potential indirect impacts.

Citations:


Prefer stable releases over prerelease versions for runtime dependencies with direct API usage.

Line 42 upgrades to @duckdb/duckdb-wasm@1.33.1-dev20.0 (dev prerelease). The app has direct API usage in duckdb-wasm-init.ts and duck-wasm-test-panel.tsx, including AsyncDuckDB instantiation, bundle selection, and query execution. While no documented breaking changes between 1.31.0 and 1.33.1-dev20.0 were found, prerelease versions can introduce undocumented changes. Either validate compatibility with this version explicitly or switch to a stable release.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/package.json` at line 42, The dependency
`@duckdb/duckdb-wasm` is pinned to a dev prerelease (1.33.1-dev20.0); update
package.json to use a stable release (e.g., the latest 1.33.x stable or revert
to 1.31.0) or explicitly validate compatibility with the prerelease by running
and confirming the duckdb-wasm-init.ts and duck-wasm-test-panel.tsx flows
(AsyncDuckDB instantiation, bundle selection, and query execution) still behave
correctly; if you keep the prerelease, add a clear comment in package.json
explaining why and include tests that exercise AsyncDuckDB creation, bundle
selection logic, and basic query execution to catch any breaking changes.

Repository owner deleted a comment from coderabbitai bot Mar 24, 2026
Repository owner deleted a comment from greptile-apps bot Mar 24, 2026
Repository owner deleted a comment from coderabbitai bot Mar 24, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
examples/apps/nextjs-app/docker/README.md (1)

43-43: ⚠️ Potential issue | 🟡 Minor

Fix typo: gip should be gzip.

The command uses gip instead of gzip, which will cause a "command not found" error.

📝 Proposed fix
-docker save ${IMAGE}  | gip  > /tmp/${IMAGE}-app.tar.gz
+docker save ${IMAGE}  | gzip > /tmp/${IMAGE}-app.tar.gz
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/README.md` at line 43, Update the README
command that saves and compresses the Docker image: replace the incorrect "gip"
token with "gzip" in the line that pipes docker save output (the line containing
"docker save ${IMAGE}  | gip  > /tmp/${IMAGE}-app.tar.gz") so the command
becomes a valid compression step using gzip and avoids the "command not found"
error.
♻️ Duplicate comments (1)
examples/apps/nextjs-app/docker/README.md (1)

31-31: ⚠️ Potential issue | 🟡 Minor

Update the image name to match the current exported image tag.

This line still references the old image name flowblade-nextjs-app-nextjs-app, but line 37 now uses flowblade-example-nextjs-app-debian. The "equivalent to" command will fail because the image name doesn't match.

📝 Proposed doc fix
-docker run --rm -it --entrypoint bash flowblade-nextjs-app-nextjs-app
+docker run --rm -it --entrypoint bash flowblade-example-nextjs-app-debian
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/apps/nextjs-app/docker/README.md` at line 31, Update the docker run
example to use the current exported image tag so the command succeeds: replace
the old image name flowblade-nextjs-app-nextjs-app with the new tag
flowblade-example-nextjs-app-debian in the line containing the docker run --rm
-it --entrypoint bash command so it matches the image referenced later (e.g.,
the example on line 37).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@examples/apps/nextjs-app/docker/README.md`:
- Line 43: Update the README command that saves and compresses the Docker image:
replace the incorrect "gip" token with "gzip" in the line that pipes docker save
output (the line containing "docker save ${IMAGE}  | gip  >
/tmp/${IMAGE}-app.tar.gz") so the command becomes a valid compression step using
gzip and avoids the "command not found" error.

---

Duplicate comments:
In `@examples/apps/nextjs-app/docker/README.md`:
- Line 31: Update the docker run example to use the current exported image tag
so the command succeeds: replace the old image name
flowblade-nextjs-app-nextjs-app with the new tag
flowblade-example-nextjs-app-debian in the line containing the docker run --rm
-it --entrypoint bash command so it matches the image referenced later (e.g.,
the example on line 37).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 488c28fd-de3c-4597-93b9-ab54a2c532b7

📥 Commits

Reviewing files that changed from the base of the PR and between ffd92ce and a629d67.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (3)
  • examples/apps/nextjs-app/docker/Dockerfile
  • examples/apps/nextjs-app/docker/README.md
  • examples/apps/nextjs-app/docker/docker-compose.yml
✅ Files skipped from review due to trivial changes (1)
  • examples/apps/nextjs-app/docker/docker-compose.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • examples/apps/nextjs-app/docker/Dockerfile

@belgattitude belgattitude merged commit 700cf65 into main Mar 24, 2026
16 checks passed
@belgattitude belgattitude deleted the improve-docker branch March 24, 2026 09:34
@coderabbitai coderabbitai bot mentioned this pull request Mar 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant