version: '3'
services:
  zrok-enable-init:
    image: busybox
    # matches uid:gid of "nobody" in zrok container image
    command: chown -Rc 65534:65534 /mnt/.zrok
    user: root
    volumes:
      - zrok_env:/mnt/.zrok
  zrok-enable:
    image: docker.io/openziti/zrok
    depends_on:
      zrok-enable-init:
        condition: service_completed_successfully
    entrypoint:
      - bash
      - -c
      - |
        if [[ -s /mnt/.zrok/environment.json ]]; then
          echo "INFO: noop: zrok environment is already enabled"
          exit 0
        else
          echo "INFO: running: zrok $$(sed -E "s/${ZROK_ENABLE_TOKEN}/************/" <<< $${@})"
          exec zrok $${@}
        fi
    command: -- enable --headless ${ZROK_ENABLE_TOKEN}
    volumes:
      - zrok_env:/mnt/.zrok
    environment:
      HOME: /mnt
      ZROK_ENABLE_TOKEN:
      ZROK_API_ENDPOINT: ${ZROK_API_ENDPOINT:-https://api.zrok.io/}
  zrok-public-share:
    image: docker.io/openziti/zrok
    command: share public --headless http://zrok-test:9090
    depends_on:
      zrok-enable:
        condition: service_completed_successfully
    volumes:
      - zrok_env:/mnt/.zrok
    environment:
      HOME: /mnt
      PFXLOG_NO_JSON: "true"

  # demo servers you can share with zrok
  zrok-test:
    image: docker.io/openziti/zrok
    command: test endpoint --address 0.0.0.0  # 9090
  httpbin-test:
    image: mccutchen/go-httpbin  # 8080/tcp

volumes:
  zrok_env:
