watermill Docker & Self-Hosted Deployment

GitHub

Building event-driven applications the easy way in Go.

9,700 stars Go Go 1 file ยท ~2,245 tokens #cqrs#event-driven#event-sourcing#events#go#golang#kafka#nats
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/golang
2. Docker Run (1-Click Launch) docker run -d --name watermill -p 3306:3306 --restart always golang:1.25
3. Podman Run podman run -d --name watermill -p 3306:3306 --restart always golang:1.25
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/golang:1.25
5. ORAS Pull (OCI Artifact) oras pull golang:1.25
6. Compose Deployment docker compose up -d
_examples/real-world-examples/transactional-events-forwarder/docker-compose.yml
Download .yml
services:
  server:
    image: golang:1.25
    environment:
      - PUBSUB_EMULATOR_HOST=googlecloud:8085
    depends_on:
      - mysql
      - googlecloud
    restart: unless-stopped
    volumes:
      - .:/app
      - $GOPATH/pkg/mod:/go/pkg/mod
    working_dir: /app
    command: go run .

  mysql:
    image: mysql:8.0
    restart: unless-stopped
    logging:
      driver: none
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: watermill
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

  googlecloud:
    image: google/cloud-sdk:414.0.0
    logging:
      driver: none
    entrypoint: gcloud --quiet beta emulators pubsub start --host-port=0.0.0.0:8085 --verbosity=debug --log-http
    ports:
      - 8085:8085
    restart: unless-stopped