# Keep build tools out of the shipped container image

A container image carrying the whole build toolchain, split so only the finished application ships.

Category: Build, containers, and artifacts
Source: https://letsship.ai/use-cases/convert-to-a-multi-stage-image
Published: 2026-08-25

## Goal

Convert a single-stage container image to multi-stage so build tools stay out of the runtime image.

## Acceptance criteria

- Build tooling is absent from the final image
- Image size is recorded before and after
- A smoke test passes against the final image
- Runtime dependencies missed by the split are added explicitly

## What lands as proof

A smoke test against the slimmed image, since the failure mode is a missing runtime dependency rather than a build error.

## Prompt

Copy this to an agent to open the ticket:

```text
Create a Linear issue in my team and assign it to the SHIP agent.

Title: Make the container image multi-stage

Description: Convert a single-stage container image to multi-stage so build tools stay out of the runtime image.

Acceptance criteria:
- Build tooling is absent from the final image
- Image size is recorded before and after
- A smoke test passes against the final image
- Runtime dependencies missed by the split are added explicitly

Before you create the issue, check whether this repository's Dockerfile is single-stage and record the current image size.
```

## Questions

### What does the agent actually change?

The ticket is scoped to one outcome: convert a single-stage container image to multi-stage so build tools stay out of the runtime image. Work that serves that outcome is in scope, and anything outside it is left for a separate ticket, so the pull request stays reviewable.

### How do I know the work is done?

The pull request carries the evidence, not only the diff. Here that means image size before and after, so a reviewer can confirm the result without reproducing the work locally.

### How much oversight does this need?

The run stops once the plan is written. Somebody reads the approach and approves it before any code exists, which is the cheapest moment to redirect the work.
