Skip to content

Inline base image into Dockerfile to fix Node 20 requirement#108

Merged
graygilmore merged 1 commit into
mainfrom
gg-inline-dockerfile
Apr 13, 2026
Merged

Inline base image into Dockerfile to fix Node 20 requirement#108
graygilmore merged 1 commit into
mainfrom
gg-inline-dockerfile

Conversation

@graygilmore
Copy link
Copy Markdown
Contributor

@graygilmore graygilmore commented Apr 13, 2026

Summary

Fixes #103. Shopify CLI 3.93+ requires Node >=20.10.0 (engine-strict: true), which breaks the action since the base Docker image used Node 18.

Rather than maintaining a separate base image on a container registry (which requires org-level permissions we couldn't obtain for ghcr.io), this inlines everything into a single Dockerfile.

Changes

  • Dockerfile now includes all dependencies (Node 20 Bookworm, Chrome, Puppeteer, LHCI, Shopify CLI)
  • Removed Ruby (rbenv, ruby-build) — the current Node.js-based Shopify CLI doesn't need it
  • Removed Dockerfile.base and build-base-image.yml workflow
  • Simplified Makefile for local development

Performance

GitHub Actions caches Docker layers per-repo, so:

  • First run for any user of the action: faster now without Ruby compilation
  • Subsequent runs: Fast (layers cached)

This avoids the need for any container registry (ghcr.io, Docker Hub) entirely.

Supersedes

This replaces the approach in #105 and #106 which attempted to use ghcr.io.

🎩 Tophatting

This is infrastructure-only (Docker build), so CI passing is the primary verification.

  1. Confirm CI passes (the check_dawn jobs exercise the action end-to-end)
  2. Optionally, build locally to verify the Dockerfile works:
    make build
  3. Optionally, shell into the container to inspect the environment:
    make ssh
    node --version   # Should show v20.x
    shopify version  # Should show 3.93+

@graygilmore graygilmore marked this pull request as ready for review April 13, 2026 16:34
Shopify CLI 3.93+ requires Node >=20.10.0 (fixes #103). Rather than maintaining a separate base image on a container registry, this inlines everything into a single Dockerfile.

Changes:

- Dockerfile now includes all dependencies (Node 20, Chrome, Ruby, Puppeteer, LHCI, Shopify CLI)

- Removed Dockerfile.base and build-base-image.yml workflow

- Simplified Makefile for local development

GitHub Actions caches Docker layers per-repo, so after the first run the build is fast. This avoids the need for registry permissions (ghcr.io, Docker Hub) entirely.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@graygilmore graygilmore force-pushed the gg-inline-dockerfile branch from 6e881da to bf941aa Compare April 13, 2026 16:43
@graygilmore graygilmore merged commit 988f0ee into main Apr 13, 2026
3 of 5 checks passed
@graygilmore graygilmore deleted the gg-inline-dockerfile branch April 13, 2026 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lighthouse-ci-action@v1 not running with latest Shopify CLI

2 participants