Start isolated docker setup.
This commit is contained in:
		
							parent
							
								
									a6ead83fd2
								
							
						
					
					
						commit
						d2ded157f8
					
				| @ -576,6 +576,7 @@ class BasicSwap(BaseApp): | ||||
| 
 | ||||
|         if self.coin_clients[coin]['connection_type'] == 'rpc': | ||||
|             if coin == Coins.XMR: | ||||
|                 self.coin_clients[coin]['walletrpchost'] = chain_client_settings.get('walletrpchost', 'localhost') | ||||
|                 self.coin_clients[coin]['walletrpcport'] = chain_client_settings.get('walletrpcport', chainparams[coin][self.chain]['walletrpcport']) | ||||
|                 if 'walletrpcpassword' in chain_client_settings: | ||||
|                     self.coin_clients[coin]['walletrpcauth'] = (chain_client_settings['walletrpcuser'], chain_client_settings['walletrpcpassword']) | ||||
|  | ||||
| @ -113,7 +113,7 @@ class BTCInterface(CoinInterface): | ||||
| 
 | ||||
|     def __init__(self, coin_settings, network): | ||||
|         super().__init__() | ||||
|         self.rpc_callback = make_rpc_func(coin_settings['rpcport'], coin_settings['rpcauth']) | ||||
|         self.rpc_callback = make_rpc_func(coin_settings['rpcport'], coin_settings['rpcauth'], host=coin_settings['rpchost']) | ||||
|         self.txoType = CTxOut | ||||
|         self._network = network | ||||
|         self.blocks_confirmed = coin_settings['blocks_confirmed'] | ||||
|  | ||||
| @ -32,7 +32,7 @@ class PARTInterface(BTCInterface): | ||||
|         return 0xa0 | ||||
| 
 | ||||
|     def __init__(self, coin_settings, network): | ||||
|         self.rpc_callback = make_rpc_func(coin_settings['rpcport'], coin_settings['rpcauth']) | ||||
|         self.rpc_callback = make_rpc_func(coin_settings['rpcport'], coin_settings['rpcauth'], host=coin_settings['rpchost']) | ||||
|         self.txoType = CTxOutPart | ||||
|         self._network = network | ||||
|         self.blocks_confirmed = coin_settings['blocks_confirmed'] | ||||
|  | ||||
| @ -91,9 +91,9 @@ class Jsonrpc(): | ||||
|             raise | ||||
| 
 | ||||
| 
 | ||||
| def callrpc(rpc_port, auth, method, params=[], wallet=None): | ||||
| def callrpc(rpc_port, auth, method, params=[], wallet=None, host='127.0.0.1'): | ||||
|     try: | ||||
|         url = 'http://%s@127.0.0.1:%d/' % (auth, rpc_port) | ||||
|         url = 'http://{}@{}:{}/'.format(auth, host, rpc_port) | ||||
|         if wallet is not None: | ||||
|             url += 'wallet/' + urllib.parse.quote(wallet) | ||||
|         x = Jsonrpc(url) | ||||
| @ -129,12 +129,13 @@ def callrpc_cli(bindir, datadir, chain, cmd, cli_bin='particl-cli'): | ||||
|     return r | ||||
| 
 | ||||
| 
 | ||||
| def make_rpc_func(port, auth, wallet=None): | ||||
| def make_rpc_func(port, auth, wallet=None, host='127.0.0.1'): | ||||
|     port = port | ||||
|     auth = auth | ||||
|     wallet = wallet | ||||
|     host = host | ||||
| 
 | ||||
|     def rpc_func(method, params=None, wallet_override=None): | ||||
|         nonlocal port, auth, wallet | ||||
|         return callrpc(port, auth, method, params, wallet if wallet_override is None else wallet_override) | ||||
|         nonlocal port, auth, wallet, host | ||||
|         return callrpc(port, auth, method, params, wallet if wallet_override is None else wallet_override, host) | ||||
|     return rpc_func | ||||
|  | ||||
| @ -4,10 +4,10 @@ import json | ||||
| import requests | ||||
| 
 | ||||
| 
 | ||||
| def callrpc_xmr(rpc_port, auth, method, params=[], path='json_rpc'): | ||||
| def callrpc_xmr(rpc_port, auth, method, params=[], rpc_host='127.0.0.1', path='json_rpc'): | ||||
|     # auth is a tuple: (username, password) | ||||
|     try: | ||||
|         url = 'http://127.0.0.1:{}/{}'.format(rpc_port, path) | ||||
|         url = 'http://{}:{}/{}'.format(rpc_host, rpc_port, path) | ||||
|         request_body = { | ||||
|             'method': method, | ||||
|             'params': params, | ||||
| @ -51,20 +51,6 @@ def callrpc_xmr_na(rpc_port, method, params=[], rpc_host='127.0.0.1', path='json | ||||
|     return r['result'] | ||||
| 
 | ||||
| 
 | ||||
| def callrpc_xmr2(rpc_port, method, params=[]): | ||||
|     try: | ||||
|         url = 'http://127.0.0.1:{}/{}'.format(rpc_port, method) | ||||
|         headers = { | ||||
|             'content-type': 'application/json' | ||||
|         } | ||||
|         p = requests.post(url, data=json.dumps(params), headers=headers) | ||||
|         r = json.loads(p.text) | ||||
|     except Exception as ex: | ||||
|         raise ValueError('RPC Server Error: {}'.format(str(ex))) | ||||
| 
 | ||||
|     return r | ||||
| 
 | ||||
| 
 | ||||
| def make_xmr_rpc_func(port, host='127.0.0.1'): | ||||
|     port = port | ||||
|     host = host | ||||
| @ -76,11 +62,12 @@ def make_xmr_rpc_func(port, host='127.0.0.1'): | ||||
|     return rpc_func | ||||
| 
 | ||||
| 
 | ||||
| def make_xmr_wallet_rpc_func(port, auth): | ||||
| def make_xmr_wallet_rpc_func(port, auth, host='127.0.0.1'): | ||||
|     port = port | ||||
|     auth = auth | ||||
|     host = host | ||||
| 
 | ||||
|     def rpc_func(method, params=None, wallet=None): | ||||
|         nonlocal port, auth | ||||
|         return callrpc_xmr(port, auth, method, params) | ||||
|         nonlocal port, auth, host | ||||
|         return callrpc_xmr(port, auth, method, params, rpc_host=host) | ||||
|     return rpc_func | ||||
|  | ||||
| @ -54,6 +54,7 @@ XMR_RPC_HOST = os.getenv('XMR_RPC_HOST', 'localhost') | ||||
| BASE_XMR_RPC_PORT = int(os.getenv('BASE_XMR_RPC_PORT', 29798)) | ||||
| BASE_XMR_ZMQ_PORT = int(os.getenv('BASE_XMR_ZMQ_PORT', 30898)) | ||||
| BASE_XMR_WALLET_PORT = int(os.getenv('BASE_XMR_WALLET_PORT', 29998)) | ||||
| XMR_WALLET_RPC_HOST = os.getenv('XMR_WALLET_RPC_HOST', 'localhost') | ||||
| XMR_WALLET_RPC_USER = os.getenv('XMR_WALLET_RPC_USER', 'xmr_wallet_user') | ||||
| XMR_WALLET_RPC_PWD = os.getenv('XMR_WALLET_RPC_PWD', 'xmr_wallet_pwd') | ||||
| XMR_SITE_COMMIT = 'db495b958f1fc6abfdfdb0a6756d902d59d9d21e'  # Lock hashes.txt to monero version | ||||
| @ -61,6 +62,12 @@ XMR_SITE_COMMIT = 'db495b958f1fc6abfdfdb0a6756d902d59d9d21e'  # Lock hashes.txt | ||||
| DEFAULT_XMR_RESTORE_HEIGHT = 2245107 | ||||
| 
 | ||||
| 
 | ||||
| PART_RPC_HOST = os.getenv('PART_RPC_HOST', 'localhost') | ||||
| LTC_RPC_HOST = os.getenv('LTC_RPC_HOST', 'localhost') | ||||
| BTC_RPC_HOST = os.getenv('BTC_RPC_HOST', 'localhost') | ||||
| NMC_RPC_HOST = os.getenv('NMC_RPC_HOST', 'localhost') | ||||
| 
 | ||||
| 
 | ||||
| def make_reporthook(): | ||||
|     read = 0  # Number of bytes read so far | ||||
|     last_percent_str = '' | ||||
| @ -256,7 +263,7 @@ def prepareCore(coin, version, settings, data_dir): | ||||
|     extractCore(coin, version, settings, bin_dir, release_path) | ||||
| 
 | ||||
| 
 | ||||
| def prepareDataDir(coin, settings, data_dir, chain, particl_mnemonic): | ||||
| def prepareDataDir(coin, settings, chain, particl_mnemonic): | ||||
|     core_settings = settings['chainclients'][coin] | ||||
|     data_dir = core_settings['datadir'] | ||||
| 
 | ||||
| @ -350,6 +357,7 @@ def printHelp(): | ||||
|     logger.info('--addcoin=               Add coin to existing setup.') | ||||
|     logger.info('--disablecoin=           Make coin inactive.') | ||||
|     logger.info('--preparebinonly         Don\'t prepare settings or datadirs.') | ||||
|     logger.info('--nocores                Don\'t download and extract any coin clients.') | ||||
|     logger.info('--portoffset=n           Raise all ports by n.') | ||||
|     logger.info('--htmlhost=              Interface to host on, default:localhost.') | ||||
|     logger.info('--xmrrestoreheight=n     Block height to restore Monero wallet from, default:{}.'.format(DEFAULT_XMR_RESTORE_HEIGHT)) | ||||
| @ -383,6 +391,7 @@ def main(): | ||||
|     chain = 'mainnet' | ||||
|     particl_wallet_mnemonic = None | ||||
|     prepare_bin_only = False | ||||
|     no_cores = False | ||||
|     with_coins = {'particl', 'litecoin'} | ||||
|     add_coin = '' | ||||
|     disable_coin = '' | ||||
| @ -417,6 +426,9 @@ def main(): | ||||
|         if name == 'preparebinonly': | ||||
|             prepare_bin_only = True | ||||
|             continue | ||||
|         if name == 'nocores': | ||||
|             no_cores = True | ||||
|             continue | ||||
|         if len(s) == 2: | ||||
|             if name == 'datadir': | ||||
|                 data_dir = os.path.expanduser(s[1].strip('"')) | ||||
| @ -483,9 +495,10 @@ def main(): | ||||
|     chainclients = { | ||||
|         'particl': { | ||||
|             'connection_type': 'rpc', | ||||
|             'manage_daemon': True, | ||||
|             'manage_daemon': True if ('particl' in with_coins and PART_RPC_HOST == 'localhost') else False, | ||||
|             'rpchost': PART_RPC_HOST, | ||||
|             'rpcport': 19792 + port_offset, | ||||
|             'datadir': os.path.join(data_dir, 'particl'), | ||||
|             'datadir': os.getenv('PART_DATA_DIR', os.path.join(data_dir, 'particl')), | ||||
|             'bindir': os.path.join(bin_dir, 'particl'), | ||||
|             'blocks_confirmed': 2, | ||||
|             'override_feerate': 0.002, | ||||
| @ -495,9 +508,10 @@ def main(): | ||||
|         }, | ||||
|         'litecoin': { | ||||
|             'connection_type': 'rpc' if 'litecoin' in with_coins else 'none', | ||||
|             'manage_daemon': True if 'litecoin' in with_coins else False, | ||||
|             'manage_daemon': True if ('litecoin' in with_coins and LTC_RPC_HOST == 'localhost') else False, | ||||
|             'rpchost': LTC_RPC_HOST, | ||||
|             'rpcport': 19795 + port_offset, | ||||
|             'datadir': os.path.join(data_dir, 'litecoin'), | ||||
|             'datadir': os.getenv('LTC_DATA_DIR', os.path.join(data_dir, 'litecoin')), | ||||
|             'bindir': os.path.join(bin_dir, 'litecoin'), | ||||
|             'use_segwit': True, | ||||
|             'blocks_confirmed': 2, | ||||
| @ -507,9 +521,10 @@ def main(): | ||||
|         }, | ||||
|         'bitcoin': { | ||||
|             'connection_type': 'rpc' if 'bitcoin' in with_coins else 'none', | ||||
|             'manage_daemon': True if 'bitcoin' in with_coins else False, | ||||
|             'manage_daemon': True if ('bitcoin' in with_coins and BTC_RPC_HOST == 'localhost') else False, | ||||
|             'rpchost': BTC_RPC_HOST, | ||||
|             'rpcport': 19796 + port_offset, | ||||
|             'datadir': os.path.join(data_dir, 'bitcoin'), | ||||
|             'datadir': os.getenv('BTC_DATA_DIR', os.path.join(data_dir, 'bitcoin')), | ||||
|             'bindir': os.path.join(bin_dir, 'bitcoin'), | ||||
|             'use_segwit': True, | ||||
|             'blocks_confirmed': 1, | ||||
| @ -519,9 +534,10 @@ def main(): | ||||
|         }, | ||||
|         'namecoin': { | ||||
|             'connection_type': 'rpc' if 'namecoin' in with_coins else 'none', | ||||
|             'manage_daemon': True if 'namecoin' in with_coins else False, | ||||
|             'manage_daemon': True if ('namecoin' in with_coins and NMC_RPC_HOST == 'localhost') else False, | ||||
|             'rpchost': NMC_RPC_HOST, | ||||
|             'rpcport': 19798 + port_offset, | ||||
|             'datadir': os.path.join(data_dir, 'namecoin'), | ||||
|             'datadir': os.getenv('NMC_DATA_DIR', os.path.join(data_dir, 'namecoin')), | ||||
|             'bindir': os.path.join(bin_dir, 'namecoin'), | ||||
|             'use_segwit': False, | ||||
|             'use_csv': False, | ||||
| @ -533,15 +549,16 @@ def main(): | ||||
|         'monero': { | ||||
|             'connection_type': 'rpc' if 'monero' in with_coins else 'none', | ||||
|             'manage_daemon': True if ('monero' in with_coins and XMR_RPC_HOST == 'localhost') else False, | ||||
|             'manage_wallet_daemon': True if 'monero' in with_coins else False, | ||||
|             'manage_wallet_daemon': True if ('monero' in with_coins and XMR_WALLET_RPC_HOST == 'localhost') else False, | ||||
|             'rpcport': BASE_XMR_RPC_PORT + port_offset, | ||||
|             'zmqport': BASE_XMR_ZMQ_PORT + port_offset, | ||||
|             'walletrpcport': BASE_XMR_WALLET_PORT + port_offset, | ||||
|             'rpchost': XMR_RPC_HOST, | ||||
|             'walletrpchost': XMR_WALLET_RPC_HOST, | ||||
|             'walletrpcuser': XMR_WALLET_RPC_USER, | ||||
|             'walletrpcpassword': XMR_WALLET_RPC_PWD, | ||||
|             'walletfile': 'swap_wallet', | ||||
|             'datadir': os.path.join(data_dir, 'monero'), | ||||
|             'datadir': os.getenv('XMR_DATA_DIR', os.path.join(data_dir, 'monero')), | ||||
|             'bindir': os.path.join(bin_dir, 'monero'), | ||||
|             'restore_height': xmr_restore_height, | ||||
|             'blocks_confirmed': 7,  # TODO: 10? | ||||
| @ -587,10 +604,11 @@ def main(): | ||||
| 
 | ||||
|         settings['chainclients'][add_coin] = chainclients[add_coin] | ||||
| 
 | ||||
|         if not no_cores: | ||||
|             prepareCore(add_coin, known_coins[add_coin], settings, data_dir) | ||||
| 
 | ||||
|         if not prepare_bin_only: | ||||
|             prepareDataDir(add_coin, settings, data_dir, chain, particl_wallet_mnemonic) | ||||
|             prepareDataDir(add_coin, settings, chain, particl_wallet_mnemonic) | ||||
|             with open(config_path, 'w') as fp: | ||||
|                 json.dump(settings, fp, indent=4) | ||||
| 
 | ||||
| @ -624,6 +642,7 @@ def main(): | ||||
|             'check_expired_seconds': 60 | ||||
|         } | ||||
| 
 | ||||
|     if not no_cores: | ||||
|         for c in with_coins: | ||||
|             prepareCore(c, known_coins[c], settings, data_dir) | ||||
| 
 | ||||
| @ -632,7 +651,7 @@ def main(): | ||||
|         return 0 | ||||
| 
 | ||||
|     for c in with_coins: | ||||
|         prepareDataDir(c, settings, data_dir, chain, particl_wallet_mnemonic) | ||||
|         prepareDataDir(c, settings, chain, particl_wallet_mnemonic) | ||||
| 
 | ||||
|     with open(config_path, 'w') as fp: | ||||
|         json.dump(settings, fp, indent=4) | ||||
|  | ||||
							
								
								
									
										1
									
								
								docker/production/.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								docker/production/.env
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| HTML_PORT=127.0.0.1:12700:12700 | ||||
							
								
								
									
										26
									
								
								docker/production/bitcoin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								docker/production/bitcoin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | ||||
| # https://github.com/NicolasDorier/docker-bitcoin/blob/master/README.md | ||||
| 
 | ||||
| FROM i_swapclient as install_stage | ||||
| 
 | ||||
| RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=bitcoin --withoutcoins=particl,litecoin | ||||
| 
 | ||||
| FROM debian:buster-slim | ||||
| COPY --from=install_stage /coin_bin . | ||||
| 
 | ||||
| ENV BITCOIN_DATA /data | ||||
| 
 | ||||
| RUN groupadd -r bitcoin && useradd -r -m -g bitcoin bitcoin \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -qq --no-install-recommends gosu \ | ||||
|     && rm -rf /var/lib/apt/lists/* \ | ||||
|     && mkdir "$BITCOIN_DATA" \ | ||||
|     && chown -R bitcoin:bitcoin "$BITCOIN_DATA" \ | ||||
|     && ln -sfn "$BITCOIN_DATA" /home/bitcoin/.bitcoin \ | ||||
|     && chown -h bitcoin:bitcoin /home/bitcoin/.bitcoin | ||||
| VOLUME /data | ||||
| 
 | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| 
 | ||||
| EXPOSE 8332 8333 18332 18333 18443 18444 | ||||
| CMD ["bitcoind"] | ||||
							
								
								
									
										11
									
								
								docker/production/bitcoin/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/production/bitcoin/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| if [[ "$1" == "bitcoin-cli" || "$1" == "bitcoin-tx" || "$1" == "bitcoind" || "$1" == "test_bitcoin" ]]; then | ||||
| 	mkdir -p "$BITCOIN_DATA" | ||||
| 
 | ||||
| 	chown -h bitcoin:bitcoin /home/bitcoin/.bitcoin | ||||
| 	exec gosu bitcoin "$@" | ||||
| else | ||||
| 	exec "$@" | ||||
| fi | ||||
							
								
								
									
										70
									
								
								docker/production/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								docker/production/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | ||||
| version: '3.3' | ||||
| 
 | ||||
| services: | ||||
|     particl_core: | ||||
|         image: i_particl | ||||
|         build: | ||||
|             context: particl | ||||
|             dockerfile: Dockerfile | ||||
|         container_name: particl_core | ||||
|         volumes: | ||||
|             - /var/swapdata/particl:/data | ||||
|         ports: | ||||
|             - "51738:51738" | ||||
|         expose: | ||||
|             - 51735 | ||||
|         restart: unless-stopped | ||||
|     bitcoin_core: | ||||
|         image: i_bitcoin | ||||
|         build: | ||||
|             context: bitcoin | ||||
|             dockerfile: Dockerfile | ||||
|         container_name: bitcoin_core | ||||
|         volumes: | ||||
|             - /var/swapdata/bitcoin:/data | ||||
|         ports: | ||||
|             - "8333:8333" | ||||
|         expose: | ||||
|             - 8332 | ||||
|         restart: unless-stopped | ||||
|     #monero_daemon: | ||||
|         #image: i_monero_daemon | ||||
|         #build: | ||||
|             #context: monero_daemon | ||||
|             #dockerfile: Dockerfile | ||||
|         #container_name: monero_daemon | ||||
|         #volumes: | ||||
|             #- /var/swapdata/monero_daemon:/data | ||||
|         #ports: | ||||
|             #- "18080:18080" | ||||
|         #expose: | ||||
|             #- 8332 | ||||
|         #restart: unless-stopped | ||||
|     monero_wallet: | ||||
|         image: i_monero_wallet | ||||
|         build: | ||||
|             context: monero_wallet | ||||
|             dockerfile: Dockerfile | ||||
|         container_name: monero_wallet | ||||
|         volumes: | ||||
|             - /var/swapdata/monero_wallet:/data | ||||
|         expose: | ||||
|             - 8332 | ||||
|         restart: unless-stopped | ||||
|     swapclient: | ||||
|         image: i_swapclient | ||||
|         build: | ||||
|             context: swapclient | ||||
|             dockerfile: Dockerfile | ||||
|         container_name: swapclient | ||||
|         volumes: | ||||
|             - /var/swapdata/swapclient:/data | ||||
|         ports: | ||||
|             - "${HTML_PORT}"  # Expose only to localhost, see .env | ||||
|         depends_on: | ||||
|             - particl_core | ||||
|         restart: unless-stopped | ||||
| networks: | ||||
|     default: | ||||
|         external: | ||||
|             name: coinswap_network | ||||
							
								
								
									
										24
									
								
								docker/production/litecoin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								docker/production/litecoin/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| FROM i_swapclient as install_stage | ||||
| 
 | ||||
| RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=litecoin --withoutcoin=particl | ||||
| 
 | ||||
| FROM debian:buster-slim | ||||
| COPY --from=install_stage /coin_bin . | ||||
| 
 | ||||
| ENV LITECOIN_DATA /data | ||||
| 
 | ||||
| RUN groupadd -r particl && useradd -r -m -g litecoin litecoin \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -qq --no-install-recommends gosu \ | ||||
|     && rm -rf /var/lib/apt/lists/* \ | ||||
|     && mkdir "$LITECOIN_DATA" \ | ||||
|     && chown -R litecoin:litecoin "$LITECOIN_DATA" \ | ||||
|     && ln -sfn "$LITECOIN_DATA" /home/litecoin/.litecoin \ | ||||
|     && chown -h litecoin:litecoin /home/litecoin/.litecoin | ||||
| VOLUME /data | ||||
| 
 | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| 
 | ||||
| EXPOSE 8332 8333 18332 18333 18443 18444 | ||||
| CMD ["litecoind"] | ||||
							
								
								
									
										11
									
								
								docker/production/litecoin/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/production/litecoin/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| if [[ "$1" == "litecoin-cli" || "$1" == "litecoin-tx" || "$1" == "litecoind" || "$1" == "test_litecoin" ]]; then | ||||
| 	mkdir -p "$LITECOIN_DATA" | ||||
| 
 | ||||
| 	chown -h litecoin:litecoin /home/litecoin/.litecoin | ||||
| 	exec gosu litecoin "$@" | ||||
| else | ||||
| 	exec "$@" | ||||
| fi | ||||
							
								
								
									
										25
									
								
								docker/production/monero_daemon/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								docker/production/monero_daemon/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | ||||
| FROM i_swapclient as install_stage | ||||
| 
 | ||||
| RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=monero --withoutcoins=particl,litecoin | ||||
| 
 | ||||
| FROM debian:buster-slim | ||||
| 
 | ||||
| COPY --from=install_stage /coin_bin . | ||||
| 
 | ||||
| ENV MONERO_DATA /data | ||||
| 
 | ||||
| RUN groupadd -r monero && useradd -r -m -g monero monero \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -qq --no-install-recommends gosu \ | ||||
|     && rm -rf /var/lib/apt/lists/* \ | ||||
|     && mkdir -p "$MONERO_DATA" \ | ||||
|     && chown -R monero:monero "$MONERO_DATA" \ | ||||
|     && ln -sfn "$MONERO_DATA" /home/monero/.monero \ | ||||
|     && chown -h monero:monero /home/monero/.monero | ||||
| VOLUME $MONERO_DATA | ||||
| 
 | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| 
 | ||||
| EXPOSE 18080 | ||||
| CMD ["monerod", "--config-file=/home/monero/.monero/monerod.conf"] | ||||
							
								
								
									
										11
									
								
								docker/production/monero_daemon/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/production/monero_daemon/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| if [[ "$1" == "monerod" ]]; then | ||||
| 	mkdir -p "$MONERO_DATA" | ||||
| 
 | ||||
| 	chown -h monero:monero /home/monero/.monero | ||||
| 	exec gosu monero "$@" | ||||
| else | ||||
| 	exec "$@" | ||||
| fi | ||||
							
								
								
									
										19
									
								
								docker/production/monero_wallet/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								docker/production/monero_wallet/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| FROM i_monero_daemon | ||||
| 
 | ||||
| ENV MONERO_DATA /data | ||||
| 
 | ||||
| RUN groupadd -r monero && useradd -r -m -g monero monero \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -qq --no-install-recommends gosu \ | ||||
|     && rm -rf /var/lib/apt/lists/* \ | ||||
|     && mkdir -p "$MONERO_DATA" \ | ||||
|     && chown -R monero:monero "$MONERO_DATA" \ | ||||
|     && ln -sfn "$MONERO_DATA" /home/monero/.monero \ | ||||
|     && chown -h monero:monero /home/monero/.monero | ||||
| VOLUME $MONERO_DATA | ||||
| 
 | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| 
 | ||||
| EXPOSE 18080 | ||||
| CMD ["monero-wallet-rpc", "--config-file=/home/monero/.monero/monerod.conf"] | ||||
							
								
								
									
										11
									
								
								docker/production/monero_wallet/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/production/monero_wallet/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| if [[ "$1" == "monerod" ]]; then | ||||
| 	mkdir -p "$MONERO_DATA" | ||||
| 
 | ||||
| 	chown -h monero:monero /home/monero/.monero | ||||
| 	exec gosu monero "$@" | ||||
| else | ||||
| 	exec "$@" | ||||
| fi | ||||
							
								
								
									
										24
									
								
								docker/production/particl/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								docker/production/particl/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| FROM i_swapclient as install_stage | ||||
| 
 | ||||
| RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=particl --withoutcoin=litecoin | ||||
| 
 | ||||
| FROM debian:buster-slim | ||||
| COPY --from=install_stage /coin_bin . | ||||
| 
 | ||||
| ENV PARTICL_DATA /data | ||||
| 
 | ||||
| RUN groupadd -r particl && useradd -r -m -g particl particl \ | ||||
|     && apt-get update \ | ||||
|     && apt-get install -qq --no-install-recommends gosu \ | ||||
|     && rm -rf /var/lib/apt/lists/* \ | ||||
|     && mkdir -p "$PARTICL_DATA" \ | ||||
|     && chown -R particl:particl "$PARTICL_DATA" \ | ||||
|     && ln -sfn "$PARTICL_DATA" /home/particl/.particl \ | ||||
|     && chown -h particl:particl /home/particl/.particl | ||||
| VOLUME /data | ||||
| 
 | ||||
| COPY entrypoint.sh /entrypoint.sh | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| 
 | ||||
| EXPOSE 51735 20792 51738 | ||||
| CMD ["particld"] | ||||
							
								
								
									
										11
									
								
								docker/production/particl/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								docker/production/particl/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| if [[ "$1" == "particl-cli" || "$1" == "particl-tx" || "$1" == "particld" || "$1" == "test_particl" ]]; then | ||||
| 	mkdir -p "$PARTICL_DATA" | ||||
| 
 | ||||
| 	chown -h particl:particl /home/particl/.particl | ||||
| 	exec gosu particl "$@" | ||||
| else | ||||
| 	exec "$@" | ||||
| fi | ||||
							
								
								
									
										32
									
								
								docker/production/swapclient/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								docker/production/swapclient/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| FROM debian:buster-slim | ||||
| 
 | ||||
| ENV LANG=C.UTF-8 \ | ||||
|     DEBIAN_FRONTEND=noninteractive \ | ||||
|     DATADIR=/data | ||||
| 
 | ||||
| RUN apt-get update; \ | ||||
|     apt-get install -y wget python3-pip gnupg unzip protobuf-compiler automake libtool pkg-config gosu; | ||||
| 
 | ||||
| RUN wget -O coincurve-anonswap.zip https://github.com/tecnovert/coincurve/archive/anonswap.zip && \ | ||||
|     unzip coincurve-anonswap.zip && \ | ||||
|     cd coincurve-anonswap && \ | ||||
|     python3 setup.py install --force | ||||
| 
 | ||||
| RUN wget -O basicswap-master.zip https://github.com/tecnovert/basicswap/archive/master.zip; \ | ||||
|     unzip basicswap-master.zip; \ | ||||
|     cd basicswap-master; \ | ||||
|     protoc -I=basicswap --python_out=basicswap basicswap/messages.proto; \ | ||||
|     pip3 install .; | ||||
| 
 | ||||
| RUN useradd -ms /bin/bash swap_user && \ | ||||
|     mkdir /data && chown swap_user -R /data | ||||
| 
 | ||||
| # Expose html port | ||||
| EXPOSE 12700 | ||||
| 
 | ||||
| VOLUME /data | ||||
| 
 | ||||
| COPY ./entrypoint.sh /entrypoint.sh | ||||
| 
 | ||||
| ENTRYPOINT ["/entrypoint.sh"] | ||||
| CMD ["basicswap-run", "-datadir=/data"] | ||||
							
								
								
									
										6
									
								
								docker/production/swapclient/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								docker/production/swapclient/entrypoint.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,6 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
| 
 | ||||
| chown -R swap_user "$DATADIR" | ||||
| exec gosu swap_user "$@" | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user