feat: self-contained Docker build, no custom base image#17
Merged
Conversation
`easy proxy build` required a custom base image `ethiclab/nginx-certbot:2.0` to exist first (built from a separate `Dockerfile.build`). Since that image was never on a registry, a fresh `npm install` could not build a working proxy without a manual, undocumented base-image build. Merge the two Dockerfiles into one self-contained `Dockerfile` that builds `FROM certbot/certbot:latest` — a public official image. Now `easy proxy build` is a single `docker build` from scratch, with no custom image to prepare. The `easy` CLI itself is unchanged. - Dockerfile: self-contained, FROM certbot/certbot:latest; adds nginx, Node, sudo and the certbot DNS plugins (the former Dockerfile.build content), plus ENTRYPOINT/VOLUME/EXPOSE/CMD - Dockerfile.build: removed - package.json: drop Dockerfile.build from the files allowlist - docs: CLAUDE.md, README.md, CHANGELOG.md, AGENTS.md, copilot-instructions.md, UC1_LOCAL_SSL_SETUP.md updated for the single-Dockerfile build Verified with a real `docker build`: image builds clean, all four certbot DNS plugins (ionos, route53, cloudflare, digitalocean) present. `npm run lint` exits 0; the bats suite passes 20/20. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
montoyaedu
added a commit
that referenced
this pull request
May 18, 2026
STATE.md was dated 2026-04-02 and predated the entire test-harness / ShellCheck / issue-5 / release-prep / self-contained-build work — it still listed obsolete blockers (push the base image to Docker Hub). Rewrite it: current version state, the PRs #9–#17 shipped this phase, the remaining items (npm publish, clean-room test, real IONOS test). Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
easy proxy buildproducedethiclab/nginx-easyfrom aDockerfilethat wasFROM ethiclab/nginx-certbot:2.0— a custom base image built separately fromDockerfile.build. That base was never on a registry, so a freshnpm installcouldn't build a working proxy without a manual, undocumented base-image build. TheDockerfileitself only added 2 lines on top of the base — the split bought nothing without a registry.Fix
Merge the two Dockerfiles into one self-contained
Dockerfilethat buildsFROM certbot/certbot:latest— a public, official image.easy proxy buildis now a singledocker buildfrom scratch, with no custom base image to prepare.Dockerfile— self-contained:FROM certbot/certbot:latest, adds nginx + Node + sudo + the certbot DNS plugins (the formerDockerfile.buildcontent), plusENTRYPOINT []/VOLUME/EXPOSE/CMD.Dockerfile.build— removed.package.json— dropDockerfile.buildfrom thefilesallowlist (package: 25 files).CLAUDE.md,README.md,CHANGELOG.md,AGENTS.md,.github/copilot-instructions.md,UC1_LOCAL_SSL_SETUP.mdupdated for the single-Dockerfile build.The
easyCLI is unchanged —easy proxy buildalready runsdocker build "$EASY_DIR" -t ethiclab/nginx-easy, which now works from scratch.Verification
Real
docker build(not just the mocked bats suite):certbot/certbot:latest.dns-ionos,dns-route53,dns-cloudflare,dns-digitalocean.Note
STATE.mdis broadly stale (dated 2026-04-02, pre-dates the test harness / #5 / release-prep work) and is left for a separate full refresh rather than partially patched here.🤖 Generated with Claude Code