Skip to content

Conversation

@nv-tusharma
Copy link
Contributor

@nv-tusharma nv-tusharma commented Sep 3, 2025

Overview:

Recent changes to Dockerfile.vllm resulted in the deletion of the dev stage in favor of local-dev stage. This was to align with the .devcontainer setup. However, to keep parity with other backends, the decision was made to keep the dev stage instead of local-dev. This PR updates the Dockerfile to use the dev stage as default instead of local-dev.

Details:

  • Use dev as default stage instead of local-dev.

Where should the reviewer start?

  • .devcontainer/README.md
  • .devcontainer/devcontainer.json
  • container/Dockerfile.vllm
  • container/build.sh

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • closes GitHub issue: #xxx

Summary by CodeRabbit

  • Documentation
    • Updated development container setup instructions to use the standard VLLM dev image and simplified build command.
    • Removed an outdated note related to framework-specific local-dev support.
  • Chores
    • Aligned dev container configuration with the new build target naming.
    • Adjusted build script conditions to match the updated target.
    • Streamlined container build stages for consistency.

No user-facing feature changes.

Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
@nv-tusharma nv-tusharma changed the title build: default to using dev instead of local-dev for dockerfile stage build: default to using dev instead of local-dev for vllm build Sep 3, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 3, 2025

Walkthrough

Renames the Docker build stage/target from local-dev to dev across Dockerfile, build script, and devcontainer config. Updates image tag references to dynamo:latest-vllm and adjusts README build instructions accordingly. No code logic outside build tooling changed; no public APIs altered.

Changes

Cohort / File(s) Summary
Devcontainer docs & config
\.devcontainer/README.md, \.devcontainer/devcontainer.json
Updated build instructions and devcontainer image tag from dynamo:latest-vllm-local-dev to dynamo:latest-vllm; build command now uses --target dev. Removed note about local-dev being VLLM-only.
Container build target rename
container/Dockerfile.vllm, container/build.sh
Renamed build stage alias from local-dev to dev. Updated script condition to append USER_UID/USER_GID when TARGET == "dev" instead of "local-dev"; other args unchanged.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer
  participant Sh as build.sh
  participant Dkr as Docker/BuildKit
  participant Img as Image: dynamo:latest-vllm

  Dev->>Sh: ./container/build.sh --target dev --framework VLLM
  Sh->>Dkr: docker build --target dev ... (UID/GID args applied)
  Dkr->>Dkr: Build stage "dev" in Dockerfile.vllm
  Dkr-->>Img: Produce image dynamo:latest-vllm
  Dev->>Dev: Devcontainer uses updated tag
  Note over Sh,Dkr: "local-dev" target no longer referenced
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

I twitch my ears at targets new,
From local-dev to dev we flew.
A stage renamed, a tag aligned,
The Docker winds now blow refined.
Hop, build, run—so sleek the view,
vllm dreams in dynamo hue. 🐇🚀


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
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: 1

Caution

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

⚠️ Outside diff range comments (3)
container/build.sh (1)

364-368: Bug: UID/GID not passed when TARGET is omitted (but defaults to dev).

If the caller doesn’t pass --target, we still build the dev stage via TARGET_STR, yet USER_UID/USER_GID aren’t forwarded because the condition only checks $TARGET == "dev". This can cause host/container permission issues.

Apply:

@@
-    if [ -n "$TARGET" ]; then
-        TARGET_STR="--target ${TARGET}"
-    else
-        TARGET_STR="--target dev"
-    fi
+    EFFECTIVE_TARGET="${TARGET:-dev}"
+    TARGET_STR="--target ${EFFECTIVE_TARGET}"
@@
-if [[ $TARGET == "dev" ]]; then
+if [[ ${EFFECTIVE_TARGET} == "dev" ]]; then
     BUILD_ARGS+=" --build-arg USER_UID=$(id -u) --build-arg USER_GID=$(id -g) "
 fi

Also applies to: 468-471

.devcontainer/README.md (2)

44-46: Update diagram label to match new image tag.

Diagram still references dynamo:latest-vllm-local-dev.

Apply:

-        IMAGE["Docker Image<br/>dynamo:latest-vllm-local-dev"]
+        IMAGE["Docker Image<br/>dynamo:latest-vllm"]

381-382: Troubleshooting section still points to local-dev target.

Align with the new default dev stage and consistent tag.

Apply:

-   ./container/build.sh --target local-dev
+   ./container/build.sh --framework VLLM
🧹 Nitpick comments (2)
.devcontainer/devcontainer.json (1)

10-10: Fix comment to match new default tag behavior.

The image is now "dynamo:latest-vllm" (no "-dev" suffix). Update the trailing comment to drop "local dev" to avoid confusion.

Apply:

-    "image": "dynamo:latest-vllm", // Use the latest VLLM local dev image
+    "image": "dynamo:latest-vllm", // Use the latest VLLM dev image
container/Dockerfile.vllm (1)

297-379: Enforce explicit UID/GID mapping for dev stage (avoid silent 1000:1000 defaults).

To prevent permission mismatches when building this Dockerfile directly (outside build.sh), drop defaults for USER_UID/USER_GID so callers must pass them. This mirrors prior local-dev intent and keeps parity with team practices.

Apply:

@@
-ARG USER_UID=1000
-ARG USER_GID=1000
+ARG USER_UID
+ARG USER_GID

Note: With the build.sh fix, these args are always provided for dev builds even when --target is omitted.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 5c197b3 and 0d44031.

📒 Files selected for processing (4)
  • .devcontainer/README.md (1 hunks)
  • .devcontainer/devcontainer.json (1 hunks)
  • container/Dockerfile.vllm (1 hunks)
  • container/build.sh (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2797
File: container/Dockerfile:437-449
Timestamp: 2025-08-30T20:43:49.632Z
Learning: In the dynamo project's devcontainer setup, the team prioritizes consistency across framework-specific Dockerfiles (like container/Dockerfile, container/Dockerfile.vllm, etc.) by mirroring their structure, even when individual optimizations might be possible, to maintain uniformity in the development environment setup.
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2797
File: .devcontainer/devcontainer.json:12-12
Timestamp: 2025-08-30T20:43:10.091Z
Learning: In the dynamo project, devcontainer.json files use templated container names (like "dynamo-vllm-devcontainer") that are automatically processed by the copy_devcontainer.sh script to generate framework-specific configurations with unique names, preventing container name collisions.
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2797
File: .devcontainer/devcontainer.json:12-12
Timestamp: 2025-08-30T20:43:10.091Z
Learning: In the dynamo project's devcontainer setup, hard-coded container names in devcontainer.json files serve as templates that are automatically processed by the copy_devcontainer.sh script to generate framework-specific configurations with unique names, preventing container name collisions.
📚 Learning: 2025-08-30T20:43:10.091Z
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2797
File: .devcontainer/devcontainer.json:12-12
Timestamp: 2025-08-30T20:43:10.091Z
Learning: In the dynamo project, devcontainer.json files use templated container names (like "dynamo-vllm-devcontainer") that are automatically processed by the copy_devcontainer.sh script to generate framework-specific configurations with unique names, preventing container name collisions.

Applied to files:

  • .devcontainer/devcontainer.json
  • .devcontainer/README.md
📚 Learning: 2025-08-30T20:43:10.091Z
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2797
File: .devcontainer/devcontainer.json:12-12
Timestamp: 2025-08-30T20:43:10.091Z
Learning: In the dynamo project's devcontainer setup, hard-coded container names in devcontainer.json files serve as templates that are automatically processed by the copy_devcontainer.sh script to generate framework-specific configurations with unique names, preventing container name collisions.

Applied to files:

  • .devcontainer/devcontainer.json
  • .devcontainer/README.md
📚 Learning: 2025-08-30T20:43:49.632Z
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2797
File: container/Dockerfile:437-449
Timestamp: 2025-08-30T20:43:49.632Z
Learning: In the dynamo project's devcontainer setup, the team prioritizes consistency across framework-specific Dockerfiles (like container/Dockerfile, container/Dockerfile.vllm, etc.) by mirroring their structure, even when individual optimizations might be possible, to maintain uniformity in the development environment setup.

Applied to files:

  • .devcontainer/devcontainer.json
  • container/Dockerfile.vllm
  • .devcontainer/README.md
📚 Learning: 2025-09-03T01:10:12.599Z
Learnt from: keivenchang
PR: ai-dynamo/dynamo#2822
File: container/Dockerfile.vllm:343-352
Timestamp: 2025-09-03T01:10:12.599Z
Learning: In the dynamo project's local-dev Docker targets, USER_UID and USER_GID build args are intentionally left without default values to force explicit UID/GID mapping during build time, preventing file permission issues in local development environments where container users need to match host user permissions for mounted volumes.

Applied to files:

  • .devcontainer/devcontainer.json
  • container/build.sh
  • .devcontainer/README.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build and Test - dynamo
  • GitHub Check: Build and Test - vllm

Copy link
Contributor

@keivenchang keivenchang left a comment

Choose a reason for hiding this comment

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

Rubber stamp so people can build and run. Will follow up with another PR.

@nv-tusharma nv-tusharma enabled auto-merge (squash) September 3, 2025 17:55
@nv-tusharma nv-tusharma merged commit e432ae4 into main Sep 3, 2025
11 checks passed
@nv-tusharma nv-tusharma deleted the tusharma/fix-vllm-dev-target branch September 3, 2025 18:02
nv-tusharma added a commit that referenced this pull request Sep 3, 2025
Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
nv-tusharma added a commit that referenced this pull request Sep 3, 2025
Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
dillon-cullinan pushed a commit that referenced this pull request Sep 5, 2025
Signed-off-by: Tushar Sharma <tusharma@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants