docker-and-release

Builds Docker images and manages cargo-release workflows for Rust FHIR server binaries.

51|19|Updated Jan 4, 2025
One-click install
npx skills add https://github.com/HeliosSoftware/hfs --skill docker-and-release-heliossoftware
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: docker-and-release
Source: https://github.com/HeliosSoftware/hfs/tree/main/.agents/skills/docker-and-release
Command: npx skills add https://github.com/HeliosSoftware/hfs --skill docker-and-release-heliossoftware

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Packaging the Helios FHIR Server binaries into Docker images and cutting releases involves non-obvious steps: the runtime-only Dockerfile requires a staged build context, each binary needs specific build arguments, and releases must coordinate cargo-release, GitHub Actions, and PyPI publishing. This Skill captures those exact procedures so builds and releases succeed on the first attempt. ## Core Features & Use Cases - Docker Image Builds: Stage a build context with a pre-compiled binary and build images for hfs, hts, sof-server, and fhirpath-server using the generic Dockerfile with BINARY_NAME and EXPOSE_PORT arguments. - Container Configuration Guidance: Documents runtime assumptions including the non-root helios user, 0.0.0.0 host variables, the /data volume, and the hts BOOTSTRAP_DIR terminology auto-import. - Release Automation: Runs cargo-release for workspace-wide version bumps, then relies on GitHub Actions to build artifacts, create GitHub Releases, build pysof wheels, and publish to PyPI. - Use Case: You need a postgres-enabled hfs container. Build the binary with the right cargo features, stage docker-context with the binary and data/ directory, then run docker build with BINARY_NAME=hfs against that context. ## Quick Start Build a Docker image for the hfs server binary and then walk me through cutting a patch release with cargo-release.

Frequently Asked Questions about docker-and-release

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a Docker image for the hfs FHIR server?▼

Build the binary with cargo build --release -p helios-hfs plus any needed features, copy it into a staged docker-context directory along with data/, then run docker build with -f Dockerfile, --build-arg BINARY_NAME=hfs, and the staged context.

Why does the Docker build fail with chmod: cannot access /app/<binary>?▼

The Dockerfile is runtime-only and compiles nothing; it copies an already-built binary from the build context. Building against the repo root fails because no binary exists there, so you must stage a docker-context directory containing the compiled binary first.

How do I release a new version of the workspace crates?▼

Run cargo release patch --dry-run to preview, then cargo release patch --execute to bump versions, commit, tag, publish to crates.io, and push. The pushed tag triggers GitHub Actions to build artifacts, create a GitHub Release, and publish pysof wheels to PyPI.

Does the Docker image run as root or a non-root user?▼

The container runs as the non-root user helios with uid/gid 1000 on a debian:trixie-slim base. It exposes port 8080 by default, sets server host variables to 0.0.0.0, and mounts /data as a volume owned by helios.

Why doesn't the repo-root .dockerignore apply to CI Docker builds?▼

Docker reads .dockerignore from the build-context root, not the Dockerfile location. Since CI builds use docker-context as the context, the repo-root .dockerignore only guards accidental root-context builds and has no effect on CI.