diff --git a/.gitignore b/.gitignore index ece9c18..9d9814f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .gitlab-ci.yml .DS_Store */docker-compose.override.yml -*/data/ +*/*/data + ./docker-compose.yml *.zip \ No newline at end of file diff --git a/lbrycrd/regtest/Dockerfile b/lbrycrd/regtest/Dockerfile index 38fa0cf..1c988e7 100644 --- a/lbrycrd/regtest/Dockerfile +++ b/lbrycrd/regtest/Dockerfile @@ -14,7 +14,7 @@ RUN addgroup --gid 1000 lbrycrd && \ # RUN wget -O /usr/bin/debugpaste https://github.com/nixc-us/debugpaste-it/raw/master/bin/debugpaste_64 && \ # chmod +x /usr/bin/debugpaste -RUN wget -O /usr/bin/lbrycrd-linux.zip https://github.com/lbryio/lbrycrd/releases/download/v0.12.2.2/lbrycrd-linux.zip && \ +RUN wget -O /usr/bin/lbrycrd-linux.zip https://github.com/lbryio/lbrycrd/releases/download/v0.12.3.1/lbrycrd-linux.zip && \ cd /usr/bin/ && \ unzip lbrycrd-linux.zip && \ rm lbrycrd-linux.zip && \ diff --git a/lbrycrd/testnet/Dockerfile b/lbrycrd/testnet/Dockerfile new file mode 100644 index 0000000..b5e4693 --- /dev/null +++ b/lbrycrd/testnet/Dockerfile @@ -0,0 +1,40 @@ +## This base image is for running latest lbrycrdd +# For some reason I may switch this image over to Alpine when I can RCA why it won't start. +FROM ubuntu:18.04 +LABEL MAINTAINER="leopere [at] nixc [dot] us" + +RUN addgroup --gid 1000 lbrycrd && \ + adduser lbrycrd --uid 1000 --gid 1000 --gecos GECOS --shell /bin/bash --disabled-password --home /data && \ + apt-get update && \ + apt-get -y install unzip wget curl && \ + apt-get autoclean -y && \ + rm -rf /var/lib/apt/lists/* + +## TODO: Consider adding debugpaste or variant +# RUN wget -O /usr/bin/debugpaste https://github.com/nixc-us/debugpaste-it/raw/master/bin/debugpaste_64 && \ +# chmod +x /usr/bin/debugpaste + +RUN wget -O /usr/bin/lbrycrd-linux.zip https://github.com/lbryio/lbrycrd/releases/download/v0.12.3.1/lbrycrd-linux.zip && \ + cd /usr/bin/ && \ + unzip lbrycrd-linux.zip && \ + rm lbrycrd-linux.zip && \ + chmod +x lbrycrdd lbrycrd-cli lbrycrd-tx + +COPY start.sh /usr/local/bin/start +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint + +# USER lbrycrd +# RUN mkdir /data +VOLUME ["/data"] +WORKDIR /data + +## Exposing daemon port and RPC port +EXPOSE 9245 9246 + +## TODO: Decide what's important for lbrycrd and possibly add an entrypoint. +## Maybe catch things that might match things that can be easily executed in the +## lbrycrd cli and if nothing is entered just default to the containers shell. +## For now this is a placeholder that executes /bin/bash on `docker exec` +# ENTRYPOINT ["docker-entrypoint"] + +CMD ["start"] diff --git a/lbrycrd/testnet/README.md b/lbrycrd/testnet/README.md new file mode 100644 index 0000000..7478937 --- /dev/null +++ b/lbrycrd/testnet/README.md @@ -0,0 +1,7 @@ +To run a local instance of testnet via docker: + + 1) clone this repository + + 2) Run `cd ./lbrycrd/testnet` + + 3) Run `docker-compose up -d` \ No newline at end of file diff --git a/lbrycrd/testnet/docker-compose.yml b/lbrycrd/testnet/docker-compose.yml new file mode 100644 index 0000000..bf0e64a --- /dev/null +++ b/lbrycrd/testnet/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.4' + +services: +############# +## Lbrycrd ## +############# + lbrycrd: + image: tiger5226/testnet + restart: always + labels: + - "traefik.expose=true" + ports: + - "11336:9246" + - "11337:11337" + ## host volumes for persistent data such as wallet private keys. + volumes: + - "./data:/data" diff --git a/lbrycrd/testnet/docker-entrypoint.sh b/lbrycrd/testnet/docker-entrypoint.sh new file mode 100755 index 0000000..77e798a --- /dev/null +++ b/lbrycrd/testnet/docker-entrypoint.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# default to run whatever the user wanted like "/bin/bash" +## If user runs no need to run any more of the entrypoint script. +if [[ -z "$@" ]]; then + echo "User did not attempt input. Now executing docker-entrypoint." +else + echo "Running $@." + exec "$@" + exit 1 +fi + +/bin/bash diff --git a/lbrycrd/testnet/start.sh b/lbrycrd/testnet/start.sh new file mode 100755 index 0000000..0d3fb2d --- /dev/null +++ b/lbrycrd/testnet/start.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# ## ToDo: Get a test case to see if this is the first run or a repeat run. +# ## If it's a first run you need to do a full index including all transactions +# ## tx index creates an index of every single transaction in the block history if +# ## not specified it will only create an index for transactions that are related to the wallet or have unspent outputs. +# ## This is specific to chainquery. + +## Ensure perms are correct prior to running main binary +mkdir -p /data/.lbrycrd +chown -R lbrycrd:lbrycrd /data +chmod -R 755 /data/ + +## TODO: Consider a config directory for future magic. +# chown -R 1000:1000 /etc/lbrycrd +# chmod -R 755 /etc/lbrycrd +rm -f /var/run/lbrycrd.pid + + +## Set config params +## TODO: Make this more automagic in the future. +echo "rpcuser=lbry" > /data/.lbrycrd/lbrycrd.conf +echo "rpcpassword=lbry" >> /data/.lbrycrd/lbrycrd.conf +echo "rpcport=11337" >> /data/.lbrycrd/lbrycrd.conf +echo "rpcbind=0.0.0.0" >> /data/.lbrycrd/lbrycrd.conf +echo "rpcallowip=0.0.0.0/0" >> /data/.lbrycrd/lbrycrd.conf +echo "testnet=1" >> /data/.lbrycrd/lbrycrd.conf +echo "txindex=1" >> /data/.lbrycrd/lbrycrd.conf +echo "server=1" >> /data/.lbrycrd/lbrycrd.conf +echo "printtoconsole=1" >> /data/.lbrycrd/lbrycrd.conf + +#nohup advance &>/dev/null & +su -c "lbrycrdd -conf=/data/.lbrycrd/lbrycrd.conf" lbrycrd + diff --git a/lbrycrd/testnet/upload.sh b/lbrycrd/testnet/upload.sh new file mode 100755 index 0000000..afb3b98 --- /dev/null +++ b/lbrycrd/testnet/upload.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +docker build -t tiger5226/testnet:latest . +docker push tiger5226/testnet:latest \ No newline at end of file