mirror of
https://github.com/cryptoadvance/specter-desktop.git
synced 2026-08-13 12:33:29 +02:00
Merge pull request #68 from k9ert/master
docker improvements and tag support
This commit is contained in:
commit
d5a5659867
3 changed files with 33 additions and 9 deletions
|
|
@ -40,6 +40,7 @@ addons:
|
|||
- ccache
|
||||
|
||||
before_install:
|
||||
- docker pull registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:latest
|
||||
- set -o errexit; source ./tests/install_bitcoind.sh
|
||||
script:
|
||||
- pip install -e .
|
||||
|
|
|
|||
|
|
@ -185,10 +185,11 @@ class BitcoindPlainController(BitcoindController):
|
|||
|
||||
class BitcoindDockerController(BitcoindController):
|
||||
''' A class specifically controlling a docker-based bitcoind-container '''
|
||||
def __init__(self,rpcport=18443):
|
||||
def __init__(self,rpcport=18443, docker_tag="latest"):
|
||||
self.btcd_container = None
|
||||
super().__init__(rpcport=rpcport)
|
||||
self.docker_exec = which('docker')
|
||||
self.docker_tag=docker_tag
|
||||
if self.docker_exec == None:
|
||||
raise("Docker not existing!")
|
||||
if self.detect_bitcoind_container(rpcport) != None:
|
||||
|
|
@ -204,7 +205,8 @@ class BitcoindDockerController(BitcoindController):
|
|||
'{}/tcp'.format(self.rpcconn.rpcport): self.rpcconn.rpcport
|
||||
}
|
||||
logging.debug("portmapping: {}".format(ports))
|
||||
self.btcd_container = dclient.containers.run("registry.gitlab.com/k9ert/specter-desktop/python-bitcoind:latest", bitcoind_path, ports=ports, detach=True)
|
||||
image = dclient.images.get("registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:{}".format(self.docker_tag))
|
||||
self.btcd_container = dclient.containers.run("registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:{}".format(self.docker_tag), bitcoind_path, ports=ports, detach=True)
|
||||
def cleanup_docker_bitcoind():
|
||||
self.btcd_container.stop()
|
||||
self.btcd_container.remove()
|
||||
|
|
@ -217,6 +219,7 @@ class BitcoindDockerController(BitcoindController):
|
|||
raise Exception("Couldn't find container or it died already. Check the logs!")
|
||||
else:
|
||||
self.rpcconn = rpcconn
|
||||
return
|
||||
|
||||
|
||||
def stop_bitcoind(self):
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
via docker.
|
||||
'''
|
||||
import os
|
||||
import sys
|
||||
import atexit
|
||||
import logging
|
||||
import shutil
|
||||
|
|
@ -23,20 +24,39 @@ def cli():
|
|||
@cli.command()
|
||||
@click.option('--debug/--no-debug', default=False)
|
||||
@click.option('--mining/--no-mining', default=True)
|
||||
def bitcoind(debug,mining):
|
||||
@click.option('--docker-tag', "docker_tag", default="latest")
|
||||
def bitcoind(debug,mining, docker_tag):
|
||||
mining_every_x_seconds = 15
|
||||
if debug:
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
click.echo(" --> starting or detecting container")
|
||||
my_bitcoind = BitcoindDockerController()
|
||||
my_bitcoind.start_bitcoind()
|
||||
click.echo(" --> containerId: %s" % my_bitcoind.btcd_container.id)
|
||||
click.echo(" --> url: %s" % my_bitcoind.rpcconn.render_url())
|
||||
my_bitcoind = BitcoindDockerController(docker_tag=docker_tag)
|
||||
try:
|
||||
my_bitcoind.start_bitcoind()
|
||||
except docker.errors.ImageNotFound:
|
||||
click.echo(" --> Image with tag {} does not exist!".format(docker_tag))
|
||||
click.echo(" --> Try to download first with docker pull registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:{}".format(docker_tag))
|
||||
sys.exit(1)
|
||||
tags_of_image = [ image.split(":")[-1] for image in my_bitcoind.btcd_container.image.tags]
|
||||
if not docker_tag in tags_of_image:
|
||||
click.echo(" --> The running docker container is not the tag you requested!")
|
||||
click.echo(" --> please stop first with docker stop {}".format(my_bitcoind.btcd_container.id))
|
||||
sys.exit(1)
|
||||
click.echo(" --> containerImage: %s" % my_bitcoind.btcd_container.image.tags)
|
||||
click.echo(" --> url: %s" % my_bitcoind.rpcconn.render_url())
|
||||
click.echo(" --> user, password: bitcoin, secret")
|
||||
click.echo(" --> host, port: localhost, 18443")
|
||||
click.echo(" --> bitcoin-cli: bitcoin-cli -regtest -rpcuser=bitcoin -rpcpassword=secret getblockchaininfo ")
|
||||
if mining:
|
||||
click.echo(" --> Now, mining a block every %i seconds. Avoid it via --no-mining" % mining_every_x_seconds)
|
||||
# Get each address some coins
|
||||
for address in fetch_wallet_addresses_for_mining():
|
||||
my_bitcoind.mine(address=address)
|
||||
try:
|
||||
for address in fetch_wallet_addresses_for_mining():
|
||||
my_bitcoind.mine(address=address)
|
||||
except FileNotFoundError:
|
||||
# might happen if there no ~/.specter folder yet
|
||||
pass
|
||||
|
||||
# make them spendable
|
||||
my_bitcoind.mine(block_count=100)
|
||||
click.echo(" --> ",nl=False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue