Skip to content

Add Docker/Compose deployment support and publish container images to GHCR#28

Merged
Distortions81 merged 2 commits into
Distortions81:mainfrom
trcjr:containerization
Apr 27, 2026
Merged

Add Docker/Compose deployment support and publish container images to GHCR#28
Distortions81 merged 2 commits into
Distortions81:mainfrom
trcjr:containerization

Conversation

@trcjr

@trcjr trcjr commented Apr 19, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR adds first-class containerization support for goPool and wires container image publishing into the release workflow.

What changed

  • added a multi-stage Dockerfile
    • Go 1.26 build stage
    • ZeroMQ build/runtime dependencies
    • minimal Debian runtime image
  • added docker-compose.yml
    • persistent ./data bind mount
    • configurable ports
    • basic healthcheck
  • added env.example
    • build metadata
    • port mappings
    • network mode
    • runtime flags
  • updated release workflow
    • added build-container job
    • builds multi-arch images for linux/amd64 and linux/arm64
    • pushes to ghcr.io/${{ github.repository }}
    • adds packages: write permission required for GHCR publishing
  • updated docs
    • README container quick start
    • documentation index link
    • operations guide container section
  • added vendor/ to .gitignore

Why

This makes goPool easier to:

  • deploy reproducibly
  • run with persistent config/state via ./data
  • test locally with Docker or Compose
  • publish and consume as a versioned container image

Notes

  • the container build preserves the existing CGO + ZeroMQ requirements
  • image build args include BUILD_TIME and BUILD_VERSION
  • compose is set up for a bind-mounted ./data directory
  • GHCR publishing now has the required package permissions

Validation

  • local Docker build succeeds
  • container starts with mounted ./data
  • Compose workflow supports background run/logs/stop flow
  • release workflow now includes container image publishing

trcjr added 2 commits April 19, 2026 08:49
Add first-class containerization support for goPool.

- add multi-stage Dockerfile for Go 1.26 + ZeroMQ build/runtime
- add docker-compose.yml with persistent ./data mount
- add env.example for common build/runtime settings
- add GHCR release workflow job for multi-arch container images
- grant packages:write for container publishing
- document Docker/Compose usage in README and operations docs
- ignore vendor/ in gitignore

This makes local deployment, reproducible builds, and container
publishing much easier while keeping the existing native build path.
@Distortions81 Distortions81 merged commit 779b86d into Distortions81:main Apr 27, 2026
2 checks passed
@Distortions81

Copy link
Copy Markdown
Owner

Been meaning to make one for it, thanks for the PR!

@codecov

codecov Bot commented Apr 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 33.96%. Comparing base (6a501e9) to head (1c2b013).
⚠️ Report is 23 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #28   +/-   ##
=======================================
  Coverage   33.96%   33.96%           
=======================================
  Files         131      131           
  Lines       21316    21316           
=======================================
  Hits         7240     7240           
  Misses      12637    12637           
  Partials     1439     1439           

☔ View full report in Codecov by Sentry.
📢 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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants