mirror of
https://github.com/basicswap/basicswap.git
synced 2025-01-03 09:19:26 +00:00
preparescript: Support production docker config.
This commit is contained in:
parent
398ef268a6
commit
2be16465fb
14 changed files with 206 additions and 58 deletions
|
@ -1,3 +1,3 @@
|
||||||
name = "basicswap"
|
name = "basicswap"
|
||||||
|
|
||||||
__version__ = "0.0.18"
|
__version__ = "0.0.19"
|
||||||
|
|
|
@ -729,13 +729,17 @@ class BasicSwap(BaseApp):
|
||||||
if c == Coins.PART:
|
if c == Coins.PART:
|
||||||
self.coin_clients[c]['have_spent_index'] = ci.haveSpentIndex()
|
self.coin_clients[c]['have_spent_index'] = ci.haveSpentIndex()
|
||||||
|
|
||||||
# Sanity checks
|
try:
|
||||||
rv = self.callcoinrpc(c, 'extkey')
|
# Sanity checks
|
||||||
if 'result' in rv and 'No keys to list.' in rv['result']:
|
rv = self.callcoinrpc(c, 'extkey')
|
||||||
raise ValueError('No keys loaded.')
|
if 'result' in rv and 'No keys to list.' in rv['result']:
|
||||||
|
raise ValueError('No keys loaded.')
|
||||||
|
|
||||||
|
if self.callcoinrpc(c, 'getstakinginfo')['enabled'] is not False:
|
||||||
|
self.log.warning('%s staking is not disabled.', ci.coin_name())
|
||||||
|
except Exception as e:
|
||||||
|
self.log.error('Sanity checks failed: %s', str(e))
|
||||||
|
|
||||||
if self.callcoinrpc(c, 'getstakinginfo')['enabled'] is not False:
|
|
||||||
self.log.warning('%s staking is not disabled.', ci.coin_name())
|
|
||||||
elif c == Coins.XMR:
|
elif c == Coins.XMR:
|
||||||
ci.ensureWalletExists()
|
ci.ensureWalletExists()
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ from basicswap.rpc import (
|
||||||
)
|
)
|
||||||
from basicswap.basicswap import BasicSwap
|
from basicswap.basicswap import BasicSwap
|
||||||
from basicswap.chainparams import Coins
|
from basicswap.chainparams import Coins
|
||||||
|
from basicswap.contrib.rpcauth import generate_salt, password_to_hmac
|
||||||
from bin.basicswap_run import startDaemon, startXmrWalletDaemon
|
from bin.basicswap_run import startDaemon, startXmrWalletDaemon
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,6 +78,14 @@ LTC_RPC_PORT = int(os.getenv('LTC_RPC_PORT', 19795))
|
||||||
BTC_RPC_PORT = int(os.getenv('BTC_RPC_PORT', 19796))
|
BTC_RPC_PORT = int(os.getenv('BTC_RPC_PORT', 19796))
|
||||||
NMC_RPC_PORT = int(os.getenv('NMC_RPC_PORT', 19798))
|
NMC_RPC_PORT = int(os.getenv('NMC_RPC_PORT', 19798))
|
||||||
|
|
||||||
|
PART_RPC_USER = os.getenv('PART_RPC_USER', '')
|
||||||
|
PART_RPC_PWD = os.getenv('PART_RPC_PWD', '')
|
||||||
|
BTC_RPC_USER = os.getenv('BTC_RPC_USER', '')
|
||||||
|
BTC_RPC_PWD = os.getenv('BTC_RPC_PWD', '')
|
||||||
|
LTC_RPC_USER = os.getenv('LTC_RPC_USER', '')
|
||||||
|
LTC_RPC_PWD = os.getenv('LTC_RPC_PWD', '')
|
||||||
|
|
||||||
|
COINS_BIND_IP = os.getenv('COINS_BIND_IP', '127.0.0.1')
|
||||||
|
|
||||||
extract_core_overwrite = True
|
extract_core_overwrite = True
|
||||||
|
|
||||||
|
@ -328,18 +337,23 @@ def prepareDataDir(coin, settings, chain, particl_mnemonic):
|
||||||
fp.write('testnet=1\n')
|
fp.write('testnet=1\n')
|
||||||
fp.write('data-dir={}\n'.format(data_dir))
|
fp.write('data-dir={}\n'.format(data_dir))
|
||||||
fp.write('rpc-bind-port={}\n'.format(core_settings['rpcport']))
|
fp.write('rpc-bind-port={}\n'.format(core_settings['rpcport']))
|
||||||
fp.write('rpc-bind-ip=127.0.0.1\n')
|
fp.write('rpc-bind-ip={}\n'.format(COINS_BIND_IP))
|
||||||
fp.write('zmq-rpc-bind-port={}\n'.format(core_settings['zmqport']))
|
fp.write('zmq-rpc-bind-port={}\n'.format(core_settings['zmqport']))
|
||||||
fp.write('zmq-rpc-bind-ip=127.0.0.1\n')
|
fp.write('zmq-rpc-bind-ip={}\n'.format(COINS_BIND_IP))
|
||||||
fp.write('prune-blockchain=1\n')
|
fp.write('prune-blockchain=1\n')
|
||||||
|
|
||||||
wallet_conf_path = os.path.join(data_dir, coin + '_wallet.conf')
|
wallets_dir = core_settings.get('walletsdir', data_dir)
|
||||||
|
if not os.path.exists(wallets_dir):
|
||||||
|
os.makedirs(wallets_dir)
|
||||||
|
|
||||||
|
wallet_conf_path = os.path.join(wallets_dir, coin + '_wallet.conf')
|
||||||
if os.path.exists(wallet_conf_path):
|
if os.path.exists(wallet_conf_path):
|
||||||
exitWithError('{} exists'.format(wallet_conf_path))
|
exitWithError('{} exists'.format(wallet_conf_path))
|
||||||
with open(wallet_conf_path, 'w') as fp:
|
with open(wallet_conf_path, 'w') as fp:
|
||||||
fp.write('daemon-address={}:{}\n'.format(core_settings['rpchost'], core_settings['rpcport']))
|
fp.write('daemon-address={}:{}\n'.format(core_settings['rpchost'], core_settings['rpcport']))
|
||||||
fp.write('no-dns=1\n')
|
fp.write('no-dns=1\n')
|
||||||
fp.write('rpc-bind-port={}\n'.format(core_settings['walletrpcport']))
|
fp.write('rpc-bind-port={}\n'.format(core_settings['walletrpcport']))
|
||||||
|
fp.write('rpc-bind-ip={}\n'.format(COINS_BIND_IP))
|
||||||
fp.write('wallet-dir={}\n'.format(os.path.join(data_dir, 'wallets')))
|
fp.write('wallet-dir={}\n'.format(os.path.join(data_dir, 'wallets')))
|
||||||
fp.write('log-file={}\n'.format(os.path.join(data_dir, 'wallet.log')))
|
fp.write('log-file={}\n'.format(os.path.join(data_dir, 'wallet.log')))
|
||||||
fp.write('shared-ringdb-dir={}\n'.format(os.path.join(data_dir, 'shared-ringdb')))
|
fp.write('shared-ringdb-dir={}\n'.format(os.path.join(data_dir, 'shared-ringdb')))
|
||||||
|
@ -358,25 +372,36 @@ def prepareDataDir(coin, settings, chain, particl_mnemonic):
|
||||||
else:
|
else:
|
||||||
logger.warning('Unknown chain %s', chain)
|
logger.warning('Unknown chain %s', chain)
|
||||||
|
|
||||||
|
if COINS_BIND_IP != '127.0.0.1':
|
||||||
|
fp.write('rpcallowip=127.0.0.1\n')
|
||||||
|
fp.write('rpcallowip=172.0.0.0/8\n') # Allow 172.x.x.x, range used by docker
|
||||||
|
fp.write('rpcbind={}\n'.format(COINS_BIND_IP))
|
||||||
|
|
||||||
fp.write('rpcport={}\n'.format(core_settings['rpcport']))
|
fp.write('rpcport={}\n'.format(core_settings['rpcport']))
|
||||||
fp.write('printtoconsole=0\n')
|
fp.write('printtoconsole=0\n')
|
||||||
fp.write('daemon=0\n')
|
fp.write('daemon=0\n')
|
||||||
fp.write('wallet=wallet.dat\n')
|
fp.write('wallet=wallet.dat\n')
|
||||||
|
|
||||||
|
salt = generate_salt(16)
|
||||||
if coin == 'particl':
|
if coin == 'particl':
|
||||||
fp.write('debugexclude=libevent\n')
|
fp.write('debugexclude=libevent\n')
|
||||||
fp.write('zmqpubsmsg=tcp://127.0.0.1:{}\n'.format(settings['zmqport']))
|
fp.write('zmqpubsmsg=tcp://{}:{}\n'.format(COINS_BIND_IP, settings['zmqport']))
|
||||||
fp.write('spentindex=1\n')
|
fp.write('spentindex=1\n')
|
||||||
fp.write('txindex=1\n')
|
fp.write('txindex=1\n')
|
||||||
fp.write('staking=0\n')
|
fp.write('staking=0\n')
|
||||||
|
if PART_RPC_USER != '':
|
||||||
|
fp.write('rpcauth={}:{}${}\n'.format(PART_RPC_USER, salt, password_to_hmac(salt, PART_RPC_PWD)))
|
||||||
if particl_mnemonic == 'none':
|
if particl_mnemonic == 'none':
|
||||||
fp.write('createdefaultmasterkey=1')
|
fp.write('createdefaultmasterkey=1')
|
||||||
elif coin == 'litecoin':
|
elif coin == 'litecoin':
|
||||||
fp.write('prune=2000\n')
|
fp.write('prune=2000\n')
|
||||||
|
if LTC_RPC_USER != '':
|
||||||
|
fp.write('rpcauth={}:{}${}\n'.format(LTC_RPC_USER, salt, password_to_hmac(salt, LTC_RPC_PWD)))
|
||||||
elif coin == 'bitcoin':
|
elif coin == 'bitcoin':
|
||||||
fp.write('prune=2000\n')
|
fp.write('prune=2000\n')
|
||||||
fp.write('fallbackfee=0.0002\n')
|
fp.write('fallbackfee=0.0002\n')
|
||||||
|
if BTC_RPC_USER != '':
|
||||||
|
fp.write('rpcauth={}:{}${}\n'.format(BTC_RPC_USER, salt, password_to_hmac(salt, BTC_RPC_PWD)))
|
||||||
elif coin == 'namecoin':
|
elif coin == 'namecoin':
|
||||||
fp.write('prune=2000\n')
|
fp.write('prune=2000\n')
|
||||||
else:
|
else:
|
||||||
|
@ -627,6 +652,18 @@ def main():
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if PART_RPC_USER != '':
|
||||||
|
chainclients['particl']['rpcuser'] = PART_RPC_USER
|
||||||
|
chainclients['particl']['rpcpassword'] = PART_RPC_PWD
|
||||||
|
if LTC_RPC_USER != '':
|
||||||
|
chainclients['litecoin']['rpcuser'] = LTC_RPC_USER
|
||||||
|
chainclients['litecoin']['rpcpassword'] = LTC_RPC_PWD
|
||||||
|
if BTC_RPC_USER != '':
|
||||||
|
chainclients['bitcoin']['rpcuser'] = BTC_RPC_USER
|
||||||
|
chainclients['bitcoin']['rpcpassword'] = BTC_RPC_PWD
|
||||||
|
|
||||||
|
chainclients['monero']['walletsdir'] = os.getenv('XMR_WALLETS_DIR', chainclients['monero']['datadir'])
|
||||||
|
|
||||||
if disable_coin != '':
|
if disable_coin != '':
|
||||||
logger.info('Disabling coin: %s', disable_coin)
|
logger.info('Disabling coin: %s', disable_coin)
|
||||||
if not os.path.exists(config_path):
|
if not os.path.exists(config_path):
|
||||||
|
|
|
@ -1,2 +1,22 @@
|
||||||
HTML_PORT=127.0.0.1:12700:12700
|
HTML_PORT=127.0.0.1:12700:12700
|
||||||
TZ=UTC
|
TZ=UTC
|
||||||
|
DATA_PATH=/mnt/hdd50/docker2
|
||||||
|
|
||||||
|
PART_RPC_HOST=particl_core
|
||||||
|
LTC_RPC_HOST=litecoin_core
|
||||||
|
BTC_RPC_HOST=bitcoin_core
|
||||||
|
|
||||||
|
PART_RPC_USER=particl_user
|
||||||
|
PART_RPC_PWD=particl_pwd
|
||||||
|
BTC_RPC_USER=bitcoin_user
|
||||||
|
BTC_RPC_PWD=bitcoin_pwd
|
||||||
|
LTC_RPC_USER=litecoin_user
|
||||||
|
LTC_RPC_PWD=litecoin_pwd
|
||||||
|
|
||||||
|
PART_DATA_DIR=/data/particl
|
||||||
|
LTC_DATA_DIR=/data/litecoin
|
||||||
|
BTC_DATA_DIR=/data/bitcoin
|
||||||
|
XMR_DATA_DIR=/data/monero_daemon
|
||||||
|
XMR_WALLETS_DIR=/data/monero_wallet
|
||||||
|
|
||||||
|
COINS_BIND_IP=0.0.0.0
|
||||||
|
|
1
docker/production/.gitignore
vendored
Normal file
1
docker/production/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.env
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
FROM i_swapclient as install_stage
|
FROM i_swapclient as install_stage
|
||||||
|
|
||||||
RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=bitcoin --withoutcoins=particl
|
RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=bitcoin --withoutcoins=particl && \
|
||||||
|
find /coin_bin -name *.tar.gz -delete
|
||||||
|
|
||||||
FROM debian:buster-slim
|
FROM debian:buster-slim
|
||||||
COPY --from=install_stage /coin_bin .
|
COPY --from=install_stage /coin_bin .
|
||||||
|
@ -23,4 +24,4 @@ COPY entrypoint.sh /entrypoint.sh
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
||||||
EXPOSE 8332 8333 18332 18333 18443 18444
|
EXPOSE 8332 8333 18332 18333 18443 18444
|
||||||
CMD ["bitcoind"]
|
CMD ["/bitcoin/bitcoind", "--datadir=/data"]
|
||||||
|
|
|
@ -8,9 +8,9 @@ services:
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: particl_core
|
container_name: particl_core
|
||||||
volumes:
|
volumes:
|
||||||
- /var/swapdata/particl:/data
|
- ${DATA_PATH}/particl:/data
|
||||||
ports:
|
#ports:
|
||||||
- "51738:51738"
|
# - "51738:51738"
|
||||||
expose:
|
expose:
|
||||||
- 51735
|
- 51735
|
||||||
logging:
|
logging:
|
||||||
|
@ -19,18 +19,32 @@ services:
|
||||||
max-size: "10m"
|
max-size: "10m"
|
||||||
max-file: "3"
|
max-file: "3"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
bitcoin_core:
|
#bitcoin_core:
|
||||||
image: i_bitcoin
|
#image: i_bitcoin
|
||||||
|
#build:
|
||||||
|
#context: bitcoin
|
||||||
|
#dockerfile: Dockerfile
|
||||||
|
#container_name: bitcoin_core
|
||||||
|
#volumes:
|
||||||
|
#- ${DATA_PATH}/bitcoin:/data
|
||||||
|
##ports:
|
||||||
|
## - "8333:8333"
|
||||||
|
#expose:
|
||||||
|
#- 8332
|
||||||
|
#logging:
|
||||||
|
#driver: "json-file"
|
||||||
|
#options:
|
||||||
|
#max-size: "10m"
|
||||||
|
#max-file: "3"
|
||||||
|
#restart: unless-stopped
|
||||||
|
litecoin_core:
|
||||||
|
image: i_litecoin
|
||||||
build:
|
build:
|
||||||
context: bitcoin
|
context: litecoin
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: bitcoin_core
|
container_name: litecoin_core
|
||||||
volumes:
|
volumes:
|
||||||
- /var/swapdata/bitcoin:/data
|
- ${DATA_PATH}/litecoin:/data
|
||||||
ports:
|
|
||||||
- "8333:8333"
|
|
||||||
expose:
|
|
||||||
- 8332
|
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: "json-file"
|
||||||
options:
|
options:
|
||||||
|
@ -44,7 +58,7 @@ services:
|
||||||
#dockerfile: Dockerfile
|
#dockerfile: Dockerfile
|
||||||
#container_name: monero_daemon
|
#container_name: monero_daemon
|
||||||
#volumes:
|
#volumes:
|
||||||
#- /var/swapdata/monero_daemon:/data
|
#- ${DATA_PATH}/monero_daemon:/data
|
||||||
#ports:
|
#ports:
|
||||||
#- "18080:18080"
|
#- "18080:18080"
|
||||||
#expose:
|
#expose:
|
||||||
|
@ -55,22 +69,22 @@ services:
|
||||||
#max-size: "10m"
|
#max-size: "10m"
|
||||||
#max-file: "3"
|
#max-file: "3"
|
||||||
#restart: unless-stopped
|
#restart: unless-stopped
|
||||||
monero_wallet:
|
#monero_wallet:
|
||||||
image: i_monero_wallet
|
#image: i_monero_wallet
|
||||||
build:
|
#build:
|
||||||
context: monero_wallet
|
#context: monero_wallet
|
||||||
dockerfile: Dockerfile
|
#dockerfile: Dockerfile
|
||||||
container_name: monero_wallet
|
#container_name: monero_wallet
|
||||||
volumes:
|
#volumes:
|
||||||
- /var/swapdata/monero_wallet:/data
|
#- ${DATA_PATH}/monero_wallet:/data
|
||||||
expose:
|
#expose:
|
||||||
- 8332
|
#- 8332
|
||||||
logging:
|
#logging:
|
||||||
driver: "json-file"
|
#driver: "json-file"
|
||||||
options:
|
#options:
|
||||||
max-size: "10m"
|
#max-size: "10m"
|
||||||
max-file: "3"
|
#max-file: "3"
|
||||||
restart: unless-stopped
|
#restart: unless-stopped
|
||||||
swapclient:
|
swapclient:
|
||||||
image: i_swapclient
|
image: i_swapclient
|
||||||
build:
|
build:
|
||||||
|
@ -78,7 +92,7 @@ services:
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: swapclient
|
container_name: swapclient
|
||||||
volumes:
|
volumes:
|
||||||
- /var/swapdata/swapclient:/data
|
- ${DATA_PATH}/swapclient:/data
|
||||||
ports:
|
ports:
|
||||||
- "${HTML_PORT}" # Expose only to localhost, see .env
|
- "${HTML_PORT}" # Expose only to localhost, see .env
|
||||||
environment:
|
environment:
|
||||||
|
@ -91,6 +105,50 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
- particl_core
|
- particl_core
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
swapprepare:
|
||||||
|
image: i_swapclient
|
||||||
|
build:
|
||||||
|
context: swapclient
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: swapprepare
|
||||||
|
volumes:
|
||||||
|
- ${DATA_PATH}/swapclient:/data/swapclient
|
||||||
|
- ${DATA_PATH}/monero_daemon:/data/monero_daemon
|
||||||
|
- ${DATA_PATH}/monero_wallet:/data/monero_wallet
|
||||||
|
- ${DATA_PATH}/particl:/data/particl
|
||||||
|
- ${DATA_PATH}/bitcoin:/data/bitcoin
|
||||||
|
- ${DATA_PATH}/litecoin:/data/litecoin
|
||||||
|
environment:
|
||||||
|
- TZ
|
||||||
|
- PART_RPC_HOST
|
||||||
|
- LTC_RPC_HOST
|
||||||
|
- BTC_RPC_HOST
|
||||||
|
- PART_RPC_PORT
|
||||||
|
- LTC_RPC_PORT
|
||||||
|
- BTC_RPC_PORT
|
||||||
|
- XMR_RPC_HOST
|
||||||
|
- BASE_XMR_RPC_PORT
|
||||||
|
- BASE_XMR_ZMQ_PORT
|
||||||
|
- BASE_XMR_WALLET_PORT
|
||||||
|
- XMR_WALLET_RPC_HOST
|
||||||
|
- XMR_WALLET_RPC_USER
|
||||||
|
- XMR_WALLET_RPC_PWD
|
||||||
|
- DEFAULT_XMR_RESTORE_HEIGHT
|
||||||
|
- UI_HTML_PORT
|
||||||
|
- PART_ZMQ_PORT
|
||||||
|
- PART_RPC_USER
|
||||||
|
- PART_RPC_PWD
|
||||||
|
- BTC_RPC_USER
|
||||||
|
- BTC_RPC_PWD
|
||||||
|
- LTC_RPC_USER
|
||||||
|
- LTC_RPC_PWD
|
||||||
|
- PART_DATA_DIR
|
||||||
|
- LTC_DATA_DIR
|
||||||
|
- BTC_DATA_DIR
|
||||||
|
- XMR_DATA_DIR
|
||||||
|
- XMR_WALLETS_DIR
|
||||||
|
- COINS_BIND_IP
|
||||||
|
restart: "no"
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
external:
|
external:
|
||||||
|
|
21
docker/production/example.env
Normal file
21
docker/production/example.env
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
HTML_PORT=127.0.0.1:12700:12700
|
||||||
|
TZ=UTC
|
||||||
|
DATA_PATH=/var/swapdata/
|
||||||
|
PART_RPC_HOST=particl_core
|
||||||
|
LTC_RPC_HOST=litecoin_core
|
||||||
|
BTC_RPC_HOST=bitcoin_core
|
||||||
|
|
||||||
|
PART_RPC_USER=particl_user
|
||||||
|
PART_RPC_PWD=particl_pwd
|
||||||
|
BTC_RPC_USER=bitcoin_user
|
||||||
|
BTC_RPC_PWD=bitcoin_pwd
|
||||||
|
LTC_RPC_USER=litecoin_user
|
||||||
|
LTC_RPC_PWD=litecoin_pwd
|
||||||
|
|
||||||
|
PART_DATA_DIR=/data/particl
|
||||||
|
LTC_DATA_DIR=/data/litecoin
|
||||||
|
BTC_DATA_DIR=/data/bitcoin
|
||||||
|
XMR_DATA_DIR=/data/monero_daemon
|
||||||
|
XMR_WALLETS_DIR=/data/monero_wallet
|
||||||
|
|
||||||
|
COINS_BIND_IP=0.0.0.0
|
|
@ -1,13 +1,14 @@
|
||||||
FROM i_swapclient as install_stage
|
FROM i_swapclient as install_stage
|
||||||
|
|
||||||
RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=litecoin --withoutcoin=particl
|
RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=litecoin --withoutcoin=particl && \
|
||||||
|
find /coin_bin -name *.tar.gz -delete
|
||||||
|
|
||||||
FROM debian:buster-slim
|
FROM debian:buster-slim
|
||||||
COPY --from=install_stage /coin_bin .
|
COPY --from=install_stage /coin_bin .
|
||||||
|
|
||||||
ENV LITECOIN_DATA /data
|
ENV LITECOIN_DATA /data
|
||||||
|
|
||||||
RUN groupadd -r particl && useradd -r -m -g litecoin litecoin \
|
RUN groupadd -r litecoin && useradd -r -m -g litecoin litecoin \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install -qq --no-install-recommends gosu \
|
&& apt-get install -qq --no-install-recommends gosu \
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
@ -21,4 +22,4 @@ COPY entrypoint.sh /entrypoint.sh
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
||||||
EXPOSE 8332 8333 18332 18333 18443 18444
|
EXPOSE 8332 8333 18332 18333 18443 18444
|
||||||
CMD ["litecoind"]
|
CMD ["/litecoin/litecoind", "--datadir=/data"]
|
||||||
|
|
|
@ -2,18 +2,16 @@ FROM i_monero_daemon
|
||||||
|
|
||||||
ENV MONERO_DATA /data
|
ENV MONERO_DATA /data
|
||||||
|
|
||||||
RUN groupadd -r monero && useradd -r -m -g monero monero \
|
RUN groupadd -r monero_wallet && useradd -r -m -g monero_wallet monero_wallet \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install -qq --no-install-recommends gosu \
|
&& apt-get install -qq --no-install-recommends gosu \
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& mkdir -p "$MONERO_DATA" \
|
&& mkdir -p "$MONERO_DATA" \
|
||||||
&& chown -R monero:monero "$MONERO_DATA" \
|
&& chown -R monero_wallet:monero_wallet "$MONERO_DATA"
|
||||||
&& ln -sfn "$MONERO_DATA" /home/monero/.monero \
|
|
||||||
&& chown -h monero:monero /home/monero/.monero
|
|
||||||
VOLUME $MONERO_DATA
|
VOLUME $MONERO_DATA
|
||||||
|
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
||||||
EXPOSE 18080
|
EXPOSE 18080
|
||||||
CMD ["monero-wallet-rpc", "--non-interactive", "--config-file=/home/monero/.monero/monerod.conf"]
|
CMD ["monero-wallet-rpc", "--non-interactive", "--config-file=/data/monero_wallet.conf"]
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [[ "$1" == "monerod" ]]; then
|
if [[ "$1" == "monero-wallet-rpc" ]]; then
|
||||||
mkdir -p "$MONERO_DATA"
|
mkdir -p "$MONERO_DATA"
|
||||||
|
|
||||||
chown -h monero:monero /home/monero/.monero
|
chown -h monero_wallet:monero_wallet /data
|
||||||
exec gosu monero "$@"
|
exec gosu monero_wallet "$@"
|
||||||
else
|
else
|
||||||
exec "$@"
|
exec "$@"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
FROM i_swapclient as install_stage
|
FROM i_swapclient as install_stage
|
||||||
|
|
||||||
RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=particl
|
RUN basicswap-prepare --preparebinonly --bindir=/coin_bin --withcoin=particl && \
|
||||||
|
find /coin_bin -name *.tar.gz -delete
|
||||||
|
|
||||||
FROM debian:buster-slim
|
FROM debian:buster-slim
|
||||||
COPY --from=install_stage /coin_bin .
|
COPY --from=install_stage /coin_bin .
|
||||||
|
@ -21,4 +22,4 @@ COPY entrypoint.sh /entrypoint.sh
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
||||||
EXPOSE 51735 20792 51738
|
EXPOSE 51735 20792 51738
|
||||||
CMD ["particld"]
|
CMD ["/particl/particld", "--datadir=/data"]
|
||||||
|
|
1
docker/production/swapclient/.gitignore
vendored
Normal file
1
docker/production/swapclient/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
test_code
|
|
@ -18,7 +18,12 @@ RUN wget -O basicswap-master.zip https://github.com/tecnovert/basicswap/archive/
|
||||||
protoc -I=basicswap --python_out=basicswap basicswap/messages.proto; \
|
protoc -I=basicswap --python_out=basicswap basicswap/messages.proto; \
|
||||||
pip3 install .;
|
pip3 install .;
|
||||||
|
|
||||||
RUN useradd -ms /bin/bash swap_user && \
|
#COPY ./test_code basicswap-master
|
||||||
|
#RUN cd basicswap-master; \
|
||||||
|
# protoc -I=basicswap --python_out=basicswap basicswap/messages.proto; \
|
||||||
|
# pip3 install .;
|
||||||
|
|
||||||
|
RUN groupadd -r swap_user && useradd -g swap_user -ms /bin/bash swap_user && \
|
||||||
mkdir /data && chown swap_user -R /data
|
mkdir /data && chown swap_user -R /data
|
||||||
|
|
||||||
# Expose html port
|
# Expose html port
|
||||||
|
|
Loading…
Reference in a new issue