-
-
Save tedder/e40460e92adbff07f6890806e12eb444 to your computer and use it in GitHub Desktop.
# launch: docker-compose up -d | |
version: "3.7" | |
services: | |
validator: | |
image: quay.io/team-helium/validator:latest-validator-amd64 | |
container_name: validator | |
init: true | |
restart: always | |
ports: | |
- "2154:2154" | |
- "127.0.0.1:4467:4467" # jsonrpc | |
volumes: | |
- "${HOME}/validator_data/:/var/data" | |
labels: | |
"com.centurylinklabs.watchtower.lifecycle.pre-update": > | |
sh -c 'while [ "$$(miner info in_consensus)" == "true" ]; do echo "in consensus, loop-waiting"; sleep 30; done' | |
"com.centurylinklabs.watchtower.lifecycle.pre-update-timeout": 43200 # 12hrs should be longer than a validator is in the consensus group. | |
val_watchtower: | |
image: containrrr/watchtower:latest | |
container_name: val_watchtower | |
restart: always | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
command: validator miner_exporter # the container name(s) to monitor | |
environment: | |
- WATCHTOWER_POLL_INTERVAL=21600 # check for new image every 6 hrs | |
- WATCHTOWER_LIFECYCLE_HOOKS=true | |
#- WATCHTOWER_DEBUG=true # uncomment to see watchtower waiting for consensus | |
miner_exporter: | |
image: ghcr.io/tedder/miner_exporter:latest | |
container_name: miner_exporter | |
restart: always | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
ports: | |
- "127.0.0.1:9825:9825" |
Here's a docker run
version for watchtower with the in_consensus
pre-update check. (waiting to test in the wild...)
NOTE: This needs tweaking. Watchtower restarts and restarts....
docker run -d \
--restart always \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower validator miner_exporter \
--cleanup \
--label=com.centurylinklabs.watchtower.lifecycle.pre-update="sh -c 'while [ "\$\(miner info in_consensus\)" == "true" ]; do echo "in consensus, loop-waiting"; sleep 30; done'" \
--label=com.centurylinklabs.watchtower.lifecycle.pre-update-timeout=43200 \
-e WATCHTOWER_LIFECYCLE_HOOKS=true \
--interval 21600
using the json rpc does work in 0.73, not sure it's the best solution or how to integrate it, but thought I'd share. Also I don't like the dep. on jq
curl -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"info_in_consensus", "params":[]}' http://127.0.0.1:4467 | jq ".result.in_consensus"
I think you are going to need a "restart: always" in each service section so that everything will start on reboot?
Thanks for writing this docker-compose.yml file. I believe the volume mount for 'validator' container should be
volumes:
- "${HOME}/validator_data:/var/data"
@philltran removing a trailing slash? It should work either way.
You are right. The issue I was having was with the quay tag. I needed to use validator
for the main net and not val
for testnet.
good call! I was having trouble mentally diffing it.
@tedder Don't you need a "restart: always" in each service section so that everything will start on reboot?
@jkowalcz not a bad idea. added.
Might want to add 8080 port for light hotspots
https://gist.github.com/rootulp/4fe3a7e420237a5632f3201faa246ab4 has two editions to this docker-compose.yml
- Expose
8080
per deployment guide - Increase
ulimit
s to avoidNo file descriptors available
error
🙏