mirror of https://github.com/lukechilds/polar.git
jamaljsr
5 years ago
11 changed files with 321 additions and 6 deletions
@ -0,0 +1,24 @@ |
|||
FROM debian:stable-slim |
|||
|
|||
ARG BITCOIN_VERSION |
|||
ENV PATH=/opt/bitcoin-${BITCOIN_VERSION}/bin:$PATH |
|||
|
|||
RUN useradd -r bitcoin \ |
|||
&& apt-get update -y \ |
|||
&& apt-get install -y curl gosu \ |
|||
&& apt-get clean \ |
|||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
|||
|
|||
RUN curl -SLO https://bitcoin.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-x86_64-linux-gnu.tar.gz \ |
|||
&& tar -xzf *.tar.gz -C /opt \ |
|||
&& rm *.tar.gz |
|||
|
|||
COPY docker-entrypoint.sh /entrypoint.sh |
|||
|
|||
VOLUME ["/home/bitcoin/.bitcoin"] |
|||
|
|||
EXPOSE 8332 8333 18332 18333 18443 18444 |
|||
|
|||
ENTRYPOINT ["/entrypoint.sh"] |
|||
|
|||
CMD ["bitcoind"] |
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
set -e |
|||
|
|||
if [ $(echo "$1" | cut -c1) = "-" ]; then |
|||
echo "$0: assuming arguments for bitcoind" |
|||
|
|||
set -- bitcoind "$@" |
|||
fi |
|||
|
|||
if [ "$1" = "bitcoind" ] || [ "$1" = "bitcoin-cli" ] || [ "$1" = "bitcoin-tx" ]; then |
|||
echo |
|||
exec gosu bitcoin "$@" |
|||
fi |
|||
|
|||
echo |
|||
exec "$@" |
@ -0,0 +1,90 @@ |
|||
version: '3.3' |
|||
services: |
|||
bitcoind: |
|||
image: bitcoind:0.18.0 |
|||
container_name: bitcoind |
|||
user: bitcoin |
|||
# Note: need to escape the dollar sign ($$) in rpcauth. there is only one in the actual password |
|||
command: bitcoind |
|||
-server=1 |
|||
-regtest=1 |
|||
-rpcauth=kiteuser:d81315a082bcf36bcdcd640e816566f3$$a7a42c95772b9e7461f016a8c797f5729b494ad569555aea28f5c42ee2b3fcda |
|||
-debug=0 |
|||
-zmqpubrawblock=tcp://0.0.0.0:28334 |
|||
-zmqpubrawtx=tcp://0.0.0.0:28335 |
|||
-txindex=1 |
|||
-dnsseed=0 |
|||
-upnp=0 |
|||
-rpcbind=0.0.0.0 |
|||
-rpcallowip=0.0.0.0/0 |
|||
volumes: |
|||
- ${PWD}/_data/bitcoind:/home/bitcoin/.bitcoin |
|||
expose: |
|||
- '18443' # RPC |
|||
- '18444' # p2p |
|||
- '28334' # ZMQ blocks |
|||
- '28335' # ZMQ txns |
|||
ports: |
|||
- '18443:18443' # RPC |
|||
- '28334:28334' # ZMQ blocks |
|||
- '28335:28335' # ZMQ txns |
|||
|
|||
alice: |
|||
image: lnd:0.7.1-beta |
|||
container_name: lnd_alice |
|||
user: lnd |
|||
command: wait-for-it bitcoind:18443 -- lnd |
|||
--noseedbackup |
|||
--tlsextradomain=lnd |
|||
--listen=0.0.0.0:9735 |
|||
--rpclisten=0.0.0.0:10009 |
|||
--restlisten=0.0.0.0:8080 |
|||
--bitcoin.active |
|||
--bitcoin.regtest |
|||
--bitcoin.node=bitcoind |
|||
--bitcoind.rpchost=bitcoind |
|||
--bitcoind.rpcuser=kiteuser |
|||
--bitcoind.rpcpass=kitepass |
|||
--bitcoind.zmqpubrawblock=tcp://bitcoind:28334 |
|||
--bitcoind.zmqpubrawtx=tcp://bitcoind:28335 |
|||
restart: always |
|||
volumes: |
|||
- ${PWD}/_data/lnd/alice:/home/lnd/.lnd |
|||
expose: |
|||
- '10000' # gRPC |
|||
- '8080' # REST |
|||
- '9735' # p2p |
|||
ports: |
|||
- '11001:10000' # gRPC |
|||
- '8001:8080' # REST |
|||
- '9001:9735' # p2p |
|||
|
|||
bob: |
|||
image: lnd:0.7.1-beta |
|||
container_name: lnd_bob |
|||
user: lnd |
|||
command: wait-for-it bitcoind:18443 -- lnd |
|||
--noseedbackup |
|||
--tlsextradomain=lnd |
|||
--listen=0.0.0.0:9735 |
|||
--rpclisten=0.0.0.0:10009 |
|||
--restlisten=0.0.0.0:8080 |
|||
--bitcoin.active |
|||
--bitcoin.regtest |
|||
--bitcoin.node=bitcoind |
|||
--bitcoind.rpchost=bitcoind |
|||
--bitcoind.rpcuser=kiteuser |
|||
--bitcoind.rpcpass=kitepass |
|||
--bitcoind.zmqpubrawblock=tcp://bitcoind:28334 |
|||
--bitcoind.zmqpubrawtx=tcp://bitcoind:28335 |
|||
restart: always |
|||
volumes: |
|||
- ${PWD}/_data/lnd/bob:/home/lnd/.lnd |
|||
expose: |
|||
- '10000' # gRPC |
|||
- '8080' # REST |
|||
- '9735' # p2p |
|||
ports: |
|||
- '11002:10000' # gRPC |
|||
- '8002:8080' # REST |
|||
- '9002:9735' # p2p |
@ -0,0 +1,24 @@ |
|||
FROM debian:stable-slim |
|||
|
|||
ARG LND_VERSION |
|||
ENV PATH=/opt/lnd-linux-amd64-v${LND_VERSION}:$PATH |
|||
|
|||
RUN useradd -r lnd \ |
|||
&& apt-get update -y \ |
|||
&& apt-get install -y curl gosu wait-for-it \ |
|||
&& apt-get clean \ |
|||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
|||
|
|||
RUN curl -SLO https://github.com/lightningnetwork/lnd/releases/download/v${LND_VERSION}/lnd-linux-amd64-v${LND_VERSION}.tar.gz \ |
|||
&& tar -xzf *.tar.gz -C /opt \ |
|||
&& rm *.tar.gz |
|||
|
|||
COPY docker-entrypoint.sh /entrypoint.sh |
|||
|
|||
VOLUME ["/home/lnd/.lnd"] |
|||
|
|||
EXPOSE 8332 8333 18332 18333 18443 18444 |
|||
|
|||
ENTRYPOINT ["/entrypoint.sh"] |
|||
|
|||
CMD ["lnd"] |
@ -0,0 +1,16 @@ |
|||
#!/bin/sh |
|||
set -e |
|||
|
|||
if [ $(echo "$1" | cut -c1) = "-" ]; then |
|||
echo "$0: assuming arguments for lnd" |
|||
|
|||
set -- lnd "$@" |
|||
fi |
|||
|
|||
if [ "$1" = "lnd" ] || [ "$1" = "lncli" ]; then |
|||
echo |
|||
exec gosu lnd "$@" |
|||
fi |
|||
|
|||
echo |
|||
exec "$@" |
@ -0,0 +1,41 @@ |
|||
/* eslint-disable @typescript-eslint/camelcase */ |
|||
import { bitcoind, lnd } from './nodeTemplates'; |
|||
|
|||
export interface ComposeService { |
|||
[key: string]: { |
|||
image: string; |
|||
container_name: string; |
|||
user: string; |
|||
command: string; |
|||
volumes: string[]; |
|||
expose: string[]; |
|||
ports: string[]; |
|||
restart?: 'always'; |
|||
}; |
|||
} |
|||
|
|||
export interface ComposeContent { |
|||
version: string; |
|||
services: ComposeService[]; |
|||
} |
|||
|
|||
class ComposeFile { |
|||
content: ComposeContent; |
|||
|
|||
constructor() { |
|||
this.content = { |
|||
version: '3.3', |
|||
services: [], |
|||
}; |
|||
} |
|||
|
|||
addBitcoind(name: string) { |
|||
this.content.services.push(bitcoind(name)); |
|||
} |
|||
|
|||
addLnd(name: string) { |
|||
this.content.services.push(lnd(name)); |
|||
} |
|||
} |
|||
|
|||
export default ComposeFile; |
@ -0,0 +1,20 @@ |
|||
import ComposeFile from './ComposeFile'; |
|||
|
|||
class NetworkManager { |
|||
start(network: Network) { |
|||
this._buildComposeFile(network); |
|||
} |
|||
|
|||
private _buildComposeFile(network: Network) { |
|||
const file = new ComposeFile(); |
|||
network.nodes.bitcoin.forEach(node => { |
|||
file.addBitcoind(node.name); |
|||
}); |
|||
network.nodes.lightning.forEach(node => { |
|||
file.addLnd(node.name); |
|||
}); |
|||
console.log(JSON.stringify(file.content, null, 2)); |
|||
} |
|||
} |
|||
|
|||
export default new NetworkManager(); |
@ -0,0 +1,74 @@ |
|||
/* eslint-disable @typescript-eslint/camelcase */ |
|||
/* eslint-disable no-template-curly-in-string */ |
|||
import { ComposeService } from './ComposeFile'; |
|||
|
|||
const trimInside = (text: string): string => text.replace(/\s+/g, ' ').trim(); |
|||
|
|||
export const bitcoind = (name: string): ComposeService => ({ |
|||
bitcoind: { |
|||
image: 'bitcoind:0.18.0', |
|||
container_name: name, |
|||
user: 'bitcoin', |
|||
command: trimInside(` |
|||
bitcoind |
|||
-server=1 |
|||
-regtest=1 |
|||
-rpcauth=kiteuser:d81315a082bcf36bcdcd640e816566f3$$a7a42c95772b9e7461f016a8c797f5729b494ad569555aea28f5c42ee2b3fcda |
|||
-debug=0 |
|||
-zmqpubrawblock=tcp://0.0.0.0:28334
|
|||
-zmqpubrawtx=tcp://0.0.0.0:28335
|
|||
-txindex=1 |
|||
-dnsseed=0 |
|||
-upnp=0 |
|||
-rpcbind=0.0.0.0 |
|||
-rpcallowip=0.0.0.0/0 |
|||
`),
|
|||
volumes: ['${PWD}/_data/bitcoind:/home/bitcoin/.bitcoin'], |
|||
expose: [ |
|||
'18443', // RPC
|
|||
'18444', // p2p
|
|||
'28334', // ZMQ blocks
|
|||
'28335', // ZMQ txns
|
|||
], |
|||
ports: [ |
|||
'18443:18443', // RPC
|
|||
'28334:28334', // ZMQ blocks
|
|||
'28335:28335', // ZMQ txns
|
|||
], |
|||
}, |
|||
}); |
|||
|
|||
export const lnd = (name: string): ComposeService => ({ |
|||
lnd: { |
|||
image: 'lnd:0.7.1-beta', |
|||
container_name: name, |
|||
user: 'lnd', |
|||
command: trimInside(` |
|||
wait-for-it bitcoind:18443 -- lnd |
|||
--noseedbackup |
|||
--tlsextradomain=lnd |
|||
--listen=0.0.0.0:9735 |
|||
--rpclisten=0.0.0.0:10009 |
|||
--restlisten=0.0.0.0:8080 |
|||
--bitcoin.active |
|||
--bitcoin.regtest |
|||
--bitcoin.node=bitcoind |
|||
--bitcoind.rpchost=bitcoind |
|||
--bitcoind.rpcuser=kiteuser |
|||
--bitcoind.rpcpass=kitepass |
|||
--bitcoind.zmqpubrawblock=tcp://bitcoind:28334
|
|||
--bitcoind.zmqpubrawtx=tcp://bitcoind:28335
|
|||
`),
|
|||
volumes: ['${PWD}/_data/lnd/alice:/home/lnd/.lnd'], |
|||
expose: [ |
|||
'10000', // gRPC
|
|||
'8080', // REST
|
|||
'9735', // p2p
|
|||
], |
|||
ports: [ |
|||
'11001:10000', // gRPC
|
|||
'8001:8080', // REST
|
|||
'9001:9735', // p2p
|
|||
], |
|||
}, |
|||
}); |
Loading…
Reference in new issue