Publishing

Publish as a container

Package the site with a small web server into a container image, for Docker, Podman, Kubernetes or a container hosting service.

Write publish.yaml

targets:
  image:
    type: container
    image: ${REGISTRY}/example-site:latest
    server: nginx          # or caddy
    push: false            # true sends it to the registry
    # csp: true            # also send the security policy the pages need

Publish

hotdog-cms publish image

HotDog builds and checks the site, then builds an image with the site and a small web server (nginx or Caddy), listening on port 8080. It needs Podman or Docker installed (it uses whichever it finds). With push: true, it's sent to the registry in image (sign in first with docker login or podman login).

Run it

docker run -d -p 80:8080 registry.example.org/example-site:latest

Use the image name from your publish.yaml, with ${REGISTRY} filled in.

The web server inside already has the right settings for a HotDog site: the "page not found" page, caching, calendar feeds. With csp: true, it also sends the strict security policy your pages need (see check -csp).

Building images in your own pipeline

If your pipeline builds images itself, context: writes only the image's build folder (the site and a Dockerfile), without building it:

    context: build/image