My Dockerfile changes don’t seem to apply
You have a Dockerfile in your repo, you edited it, but the build Lizard runs doesn’t match what you wrote.
What this means
The platform decided your repo’s Dockerfile was incomplete and regenerated one for you with lizardpack instead of using yours verbatim.
Why this can happen
Lizard only uses a repo Dockerfile verbatim on the lizardpack auto-detect path if it has a real build step — a RUN <package-manager> line. A Dockerfile that only copies pre-built artifacts (COPY dist/, build/, out/, .next/, public/) with no RUN step is treated as incomplete, on the assumption those artifacts were built outside the image. In that case lizardpack generates a replacement Dockerfile that includes the missing build step.
This only applies on the lizardpack auto-detect path. If buildCommand or startCommand is set on the service, Lizard synthesizes a Dockerfile from those commands instead and never looks at your repo’s Dockerfile at all.
Possible solutions
Add a real build step
If you want your Dockerfile used as-is, give it an actual build step instead of copying pre-built output:
RUN npm ci && npm run buildOr force verbatim use
Clear build and start overrides, then set dockerfilePath in the same update. Overrides take priority over the file path:
lizard service set api --set buildCommand=null --set startCommand=null --set dockerfilePath=DockerfileSee also
- Build Pipeline — the full build decision order.
- Build configuration reference
- Deploying any Python app on Lizard — when to let lizardpack write the Dockerfile and when to bring your own.
Changing these build fields can start a build. Check lizard events before sending another redeploy, to avoid starting a second build.
Updated