Skip to content

fix(binary): address missing dockerfile in container agents - #2139

Open
Hweinstock wants to merge 1 commit into
aws:refactorfrom
Hweinstock:fix/container-dev
Open

fix(binary): address missing dockerfile in container agents#2139
Hweinstock wants to merge 1 commit into
aws:refactorfrom
Hweinstock:fix/container-dev

Conversation

@Hweinstock

Copy link
Copy Markdown
Contributor

Problem

Dev fails when using the binary on container based agents.

> agentcore project create --template hello-world-python-container --name testP
...
> agentcore project dev --mode headless --agent hello_world
OTEL collector listening on port 35509; traces persist to /local/home/hkobew/gh-repos/agentcore-cli/testP/agentcore/.cli/traces/otlp.
Error: container Dockerfile not found: /local/home/hkobew/gh-repos/agentcore-cli/testP/app/hello_world/Dockerfile

container based agents (currently only hello-world-python-container) are unable to find the dockerfile in dev mode. This is because the Dockerfile is never rendered into the project.

The root cause is that assets are embedded with the following pattern:

naming: { asset: ASSET_NAMING },

from

const ASSET_NAMING = "agentcore-assets/[dir]/[name].[ext]";

But when a file doesn't have an extension, its still rendered as [dir]/[name]. ex. Dockerfile --> Dockerfile. so we can't find it.

Solution

  • rename Dockerfile to Dockerfile.template.
  • tweak renderName to remove this template so that Dockerfile is rendered.

Verification

> agentcore project create --template hello-world-python-container --name testagent
...
> ls testagent/app/hello_world 
Dockerfile  README.md  main.py  pyproject.toml  uv.lock

> agentcore project dev --mode headless --agent hello_world
OTEL collector listening on port 33811; traces persist to /local/home/...
[hello_world] Building image with docker
[hello_world] #0 building with "default" instance using docker driver
[hello_world] #1 [internal] load build definition from Dockerfile
[hello_world] #1 transferring dockerfile: 1.18kB done
[hello_world] #1 DONE 0.0s
[hello_world] #2 [internal] load metadata for public.ecr.aws/docker/library/python:3.12-slim-trixie
[hello_world] #2 DONE 0.1s
[hello_world] #3 [internal] load .dockerignore
[hello_world] #3 transferring context: 358B done
[hello_world] #3 DONE 0.0s
[hello_world] #4 [1/8] FROM public.ecr.aws/docker/library/python:3.12-slim-trixie@sha256:09f7da3bc104798d0afb40bc08d23ab2da20a76130cec1f2ef170848f5d85217
[hello_world] #4 DONE 0.0s
[hello_world] #5 [internal] load build context
[hello_world] #5 transferring context: 489.23kB done
[hello_world] #5 DONE 0.0s
[hello_world] #6 [7/8] COPY --chown=bedrock_agentcore:bedrock_agentcore . .
[hello_world] #6 CACHED
[hello_world] #7 [4/8] RUN useradd -m -u 1000 bedrock_agentcore
[hello_world] #7 CACHED
[hello_world] #8 [5/8] COPY pyproject.toml uv.lock ./
[hello_world] #8 CACHED
[hello_world] #9 [2/8] RUN pip install --no-cache-dir uv
[hello_world] #9 CACHED
[hello_world] #10 [3/8] WORKDIR /app
[hello_world] #10 CACHED
[hello_world] #11 [6/8] RUN uv sync --frozen --no-dev --no-install-project
[hello_world] #11 CACHED
[hello_world] #12 [8/8] RUN uv sync --frozen --no-dev
[hello_world] #12 CACHED
[hello_world] #13 exporting to image
[hello_world] #13 exporting layers done
[hello_world] #13 writing image sha256:5e4124733d9ad91e4ef6dc1987e9df0ac78cfdc830f329842fc91a47f059647f done
[hello_world] #13 naming to docker.io/agentcore-dev/hello_world-706037c853f9 done
[hello_world] #13 DONE 0.0s
[hello_world] Starting container

[separate terminal]

> curl -X POST http://localhost:8080/invocations \
    -H "Content-Type: application/json" \
    -d '{"prompt": "Hello!"}'
    
agent response ...

@github-actions github-actions Bot added the size/s PR size: S label Aug 28, 2026
@agentcore-devx-automation agentcore-devx-automation Bot added agentcore-harness-reviewing AgentCore Harness review in progress claude-security-reviewing Claude Code /security-review in progress labels Aug 28, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automation agentcore-devx-automation Bot removed the claude-security-reviewing Claude Code /security-review in progress label Aug 28, 2026

@agentcore-devx-automation agentcore-devx-automation Bot left a comment

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.

AgentCore Harness Review

Verdict: Looks good

Clean, targeted fix for the missing Dockerfile in bundled/embedded container templates. Renaming to Dockerfile.template and generalizing renderName to strip a trailing .template for non-ignore files is a natural extension of the existing pattern.

Some things I checked and confirmed are fine:

  • The generalized .template stripping in renderName only affects files loaded via FsTreeNode.fromAssetSource. The only other callers today are templates/hello-world-python-container, templates/hello-world-python, templates/strands-http-python, and cdk/ — none of them contain non-ignore .template files that would be adversely renamed.
  • templates/shared/env.local.template is read via assetSource.read directly, not through fromAssetSource, so its name is unaffected.
  • The *ignore.template branch runs first and early-returns, so gitignore.template/npmignore.template/dockerignore.template still resolve to their dotfile forms.
  • New test uses a real in-memory AssetSource rather than mocks — matches the codebase convention.
  • Bug fix (not a new feature), so no telemetry expected.

@agentcore-devx-automation agentcore-devx-automation Bot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 28, 2026
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.19%. Comparing base (fadad5a) to head (9145394).

Additional details and impacted files
@@            Coverage Diff            @@
##           refactor    #2139   +/-   ##
=========================================
  Coverage     97.19%   97.19%           
=========================================
  Files           471      471           
  Lines         28731    28733    +2     
=========================================
+ Hits          27925    27927    +2     
  Misses          806      806           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s PR size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants