Added basic docker images

This commit is contained in:
Ben Wilson 2019-11-15 11:35:00 -05:00
parent 726388b16c
commit d386cfb01a
23 changed files with 939 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.env

View File

@ -1 +1,18 @@
# docker-builds
## Buildbot docker files for Kubernetes workers
[Debian 8](./bb-worker-debian8)
[Debian 9](./bb-worker-debian9)
[Debian 10](./bb-worker-debian10)
[Ubuntu 16.04](./bb-worker-ubuntu1604)
[Ubuntu 18.04](./bb-worker-ubuntu1804)
[Ubuntu 19.04](./bb-worker-ubuntu1904)
## Zcashd for general usage
[Zcashd (Debian9)](./zcashd)
## Zcash Blockchain explorer
[zcash-insight-explorer (Debian 9)](./zcash-insight-explorer)

View File

@ -0,0 +1,61 @@
FROM debian:10
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
build-essential \
autoconf \
cmake \
pkg-config \
curl \
git \
wget \
python-dev \
python-pip \
libtool \
lcov \
valgrind \
dumb-init \
bsdmainutils \
python-requests \
&& pip install \
virtualenv \
pyblake2 \
pip
# Buildbot user
ARG BUILDBOT_USER=zcbbworker
ARG BUILDBOT_UID=2001
RUN useradd --home-dir /home/$BUILDBOT_USER \
--shell /bin/bash \
--create-home \
--uid $BUILDBOT_UID\
$BUILDBOT_USER
USER $BUILDBOT_USER
WORKDIR /home/$BUILDBOT_USER
RUN /usr/local/bin/virtualenv venv \
&& . venv/bin/activate \
&& pip install \
buildbot-worker \
pyflakes \
pyblake2 \
pyzmq \
twisted[tls]
# Buildbot worker
ARG BUILDBOT_WORKER_NAME=debian8-docker
ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted
ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash
ARG BUILDBOT_MASTER_PORT=9899
WORKDIR /home/$BUILDBOT_USER
RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \
$BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \
$BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \
&& echo "OS: Debian 10" > $BUILDBOT_WORKER_NAME/info/host
ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac
WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME
CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"]

View File

@ -0,0 +1,40 @@
import fnmatch
import os
import sys
from twisted.application import service
from twisted.python.log import FileLogObserver
from twisted.python.log import ILogObserver
from buildbot_worker.bot import Worker
# setup worker
basedir = os.environ.get("BUILDBOT_BASEDIR",
os.path.abspath(os.path.dirname(__file__)))
application = service.Application('buildbot-worker')
application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
# and worker on the same process!
buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
port = int(os.environ.get("BUILDMASTER_PORT", 9989))
workername = os.environ.get("WORKERNAME", 'docker')
passwd = os.environ.get("WORKERPASS")
# delete the password from the environ so that it is not leaked in the log
blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
for name in list(os.environ.keys()):
for toremove in blacklist:
if fnmatch.fnmatch(name, toremove):
del os.environ[name]
keepalive = 600
umask = None
maxdelay = 300
allow_shutdown = None
maxretries = 10
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
allow_shutdown=allow_shutdown, maxRetries=maxretries)
s.setServiceParent(application)

View File

@ -0,0 +1,63 @@
FROM debian:8
ARG DEBIAN_FRONTEND=noninteractive
ARG DUMBINIT_VERSION=v1.2.2
RUN apt-get update \
&& apt-get install -y \
build-essential \
autoconf \
cmake \
pkg-config \
curl \
git \
wget \
python-dev \
python-pip \
libtool \
lcov \
valgrind \
bsdmainutils \
python-requests \
&& pip install \
virtualenv \
pyblake2 \
pip
RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64
RUN chmod +x /usr/bin/dumb-init
# Buildbot user
ARG BUILDBOT_USER=zcbbworker
ARG BUILDBOT_UID=2001
RUN useradd --home-dir /home/$BUILDBOT_USER \
--shell /bin/bash \
--create-home \
--uid $BUILDBOT_UID\
$BUILDBOT_USER
USER $BUILDBOT_USER
WORKDIR /home/$BUILDBOT_USER
RUN /usr/local/bin/virtualenv venv \
&& . venv/bin/activate \
&& pip install \
buildbot-worker \
pyflakes \
pyblake2 \
pyzmq \
twisted[tls]
# Buildbot worker
ARG BUILDBOT_WORKER_NAME=debian8-docker
ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted
ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash
ARG BUILDBOT_MASTER_PORT=9899
WORKDIR /home/$BUILDBOT_USER
RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \
$BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \
$BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \
&& echo "OS: Debian 8" > $BUILDBOT_WORKER_NAME/info/host
ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac
WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME
CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"]

View File

@ -0,0 +1,40 @@
import fnmatch
import os
import sys
from twisted.application import service
from twisted.python.log import FileLogObserver
from twisted.python.log import ILogObserver
from buildbot_worker.bot import Worker
# setup worker
basedir = os.environ.get("BUILDBOT_BASEDIR",
os.path.abspath(os.path.dirname(__file__)))
application = service.Application('buildbot-worker')
application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
# and worker on the same process!
buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
port = int(os.environ.get("BUILDMASTER_PORT", 9989))
workername = os.environ.get("WORKERNAME", 'docker')
passwd = os.environ.get("WORKERPASS")
# delete the password from the environ so that it is not leaked in the log
blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
for name in list(os.environ.keys()):
for toremove in blacklist:
if fnmatch.fnmatch(name, toremove):
del os.environ[name]
keepalive = 600
umask = None
maxdelay = 300
allow_shutdown = None
maxretries = 10
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
allow_shutdown=allow_shutdown, maxRetries=maxretries)
s.setServiceParent(application)

View File

@ -0,0 +1,61 @@
FROM debian:9
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
build-essential \
autoconf \
cmake \
pkg-config \
curl \
git \
wget \
python-dev \
python-pip \
libtool \
lcov \
valgrind \
dumb-init \
bsdmainutils \
python-requests \
&& pip install \
virtualenv \
pyblake2 \
pip
# Buildbot user
ARG BUILDBOT_USER=zcbbworker
ARG BUILDBOT_UID=2001
RUN useradd --home-dir /home/$BUILDBOT_USER \
--shell /bin/bash \
--create-home \
--uid $BUILDBOT_UID\
$BUILDBOT_USER
USER $BUILDBOT_USER
WORKDIR /home/$BUILDBOT_USER
RUN /usr/local/bin/virtualenv venv \
&& . venv/bin/activate \
&& pip install \
buildbot-worker \
pyflakes \
pyblake2 \
pyzmq \
twisted[tls]
# Buildbot worker
ARG BUILDBOT_WORKER_NAME=debian8-docker
ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted
ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash
ARG BUILDBOT_MASTER_PORT=9899
WORKDIR /home/$BUILDBOT_USER
RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \
$BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \
$BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \
&& echo "OS: Debian 9" > $BUILDBOT_WORKER_NAME/info/host
ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac
WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME
CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"]

View File

@ -0,0 +1,40 @@
import fnmatch
import os
import sys
from twisted.application import service
from twisted.python.log import FileLogObserver
from twisted.python.log import ILogObserver
from buildbot_worker.bot import Worker
# setup worker
basedir = os.environ.get("BUILDBOT_BASEDIR",
os.path.abspath(os.path.dirname(__file__)))
application = service.Application('buildbot-worker')
application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
# and worker on the same process!
buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
port = int(os.environ.get("BUILDMASTER_PORT", 9989))
workername = os.environ.get("WORKERNAME", 'docker')
passwd = os.environ.get("WORKERPASS")
# delete the password from the environ so that it is not leaked in the log
blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
for name in list(os.environ.keys()):
for toremove in blacklist:
if fnmatch.fnmatch(name, toremove):
del os.environ[name]
keepalive = 600
umask = None
maxdelay = 300
allow_shutdown = None
maxretries = 10
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
allow_shutdown=allow_shutdown, maxRetries=maxretries)
s.setServiceParent(application)

View File

@ -0,0 +1,63 @@
FROM ubuntu:16.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
build-essential \
autoconf \
cmake \
pkg-config \
curl \
git \
wget \
python-dev \
python-pip \
libtool \
lcov \
valgrind \
bsdmainutils \
python-requests \
&& pip install \
virtualenv \
pyblake2 \
pip
RUN wget -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64
RUN chmod +x /usr/bin/dumb-init
# Buildbot user
ARG BUILDBOT_USER=zcbbworker
ARG BUILDBOT_UID=2001
RUN useradd --home-dir /home/$BUILDBOT_USER \
--shell /bin/bash \
--create-home \
--uid $BUILDBOT_UID\
$BUILDBOT_USER
USER $BUILDBOT_USER
WORKDIR /home/$BUILDBOT_USER
RUN /usr/local/bin/virtualenv venv \
&& . venv/bin/activate \
&& pip install \
buildbot-worker \
pyflakes \
pyblake2 \
pyzmq \
twisted[tls]
# Buildbot worker
ARG BUILDBOT_WORKER_NAME=ubuntu16.04-docker
ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted
ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash
ARG BUILDBOT_MASTER_PORT=9899
WORKDIR /home/$BUILDBOT_USER
RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \
$BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \
$BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \
&& echo "OS: Ubuntu 16.04" > $BUILDBOT_WORKER_NAME/info/host
ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac
WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME
CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"]

View File

@ -0,0 +1,40 @@
import fnmatch
import os
import sys
from twisted.application import service
from twisted.python.log import FileLogObserver
from twisted.python.log import ILogObserver
from buildbot_worker.bot import Worker
# setup worker
basedir = os.environ.get("BUILDBOT_BASEDIR",
os.path.abspath(os.path.dirname(__file__)))
application = service.Application('buildbot-worker')
application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
# and worker on the same process!
buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
port = int(os.environ.get("BUILDMASTER_PORT", 9989))
workername = os.environ.get("WORKERNAME", 'docker')
passwd = os.environ.get("WORKERPASS")
# delete the password from the environ so that it is not leaked in the log
blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
for name in list(os.environ.keys()):
for toremove in blacklist:
if fnmatch.fnmatch(name, toremove):
del os.environ[name]
keepalive = 600
umask = None
maxdelay = 300
allow_shutdown = None
maxretries = 10
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
allow_shutdown=allow_shutdown, maxRetries=maxretries)
s.setServiceParent(application)

View File

@ -0,0 +1,61 @@
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
build-essential \
autoconf \
cmake \
pkg-config \
curl \
git \
wget \
python-dev \
python-pip \
libtool \
lcov \
valgrind \
dumb-init \
bsdmainutils \
python-requests \
&& pip install \
virtualenv \
pyblake2 \
pip
# Buildbot user
ARG BUILDBOT_USER=zcbbworker
ARG BUILDBOT_UID=2001
RUN useradd --home-dir /home/$BUILDBOT_USER \
--shell /bin/bash \
--create-home \
--uid $BUILDBOT_UID\
$BUILDBOT_USER
USER $BUILDBOT_USER
WORKDIR /home/$BUILDBOT_USER
RUN /usr/local/bin/virtualenv venv \
&& . venv/bin/activate \
&& pip install \
buildbot-worker \
pyflakes \
pyblake2 \
pyzmq \
twisted[tls]
# Buildbot worker
ARG BUILDBOT_WORKER_NAME=ubuntu18.04-docker
ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted
ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash
ARG BUILDBOT_MASTER_PORT=9899
WORKDIR /home/$BUILDBOT_USER
RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \
$BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \
$BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \
&& echo "OS: Ubuntu 18.04" > $BUILDBOT_WORKER_NAME/info/host
ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac
WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME
CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"]

View File

@ -0,0 +1,40 @@
import fnmatch
import os
import sys
from twisted.application import service
from twisted.python.log import FileLogObserver
from twisted.python.log import ILogObserver
from buildbot_worker.bot import Worker
# setup worker
basedir = os.environ.get("BUILDBOT_BASEDIR",
os.path.abspath(os.path.dirname(__file__)))
application = service.Application('buildbot-worker')
application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
# and worker on the same process!
buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
port = int(os.environ.get("BUILDMASTER_PORT", 9989))
workername = os.environ.get("WORKERNAME", 'docker')
passwd = os.environ.get("WORKERPASS")
# delete the password from the environ so that it is not leaked in the log
blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
for name in list(os.environ.keys()):
for toremove in blacklist:
if fnmatch.fnmatch(name, toremove):
del os.environ[name]
keepalive = 600
umask = None
maxdelay = 300
allow_shutdown = None
maxretries = 10
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
allow_shutdown=allow_shutdown, maxRetries=maxretries)
s.setServiceParent(application)

View File

@ -0,0 +1,61 @@
FROM ubuntu:19.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y \
build-essential \
autoconf \
cmake \
pkg-config \
curl \
git \
wget \
python-dev \
python-pip \
libtool \
lcov \
valgrind \
dumb-init \
bsdmainutils \
python-requests \
&& pip install \
virtualenv \
pyblake2 \
pip
# Buildbot user
ARG BUILDBOT_USER=zcbbworker
ARG BUILDBOT_UID=2001
RUN useradd --home-dir /home/$BUILDBOT_USER \
--shell /bin/bash \
--create-home \
--uid $BUILDBOT_UID\
$BUILDBOT_USER
USER $BUILDBOT_USER
WORKDIR /home/$BUILDBOT_USER
RUN /usr/local/bin/virtualenv venv \
&& . venv/bin/activate \
&& pip install \
buildbot-worker \
pyflakes \
pyblake2 \
pyzmq \
twisted[tls]
# Buildbot worker
ARG BUILDBOT_WORKER_NAME=ubuntu19.04-docker
ARG BUILDBOT_WORKER_PASS=thisgetssetwhenpodisstarted
ARG BUILDBOT_MASTER_HOST=dev-ci.z.cash
ARG BUILDBOT_MASTER_PORT=9899
WORKDIR /home/$BUILDBOT_USER
RUN venv/bin/buildbot-worker create-worker $BUILDBOT_WORKER_NAME \
$BUILDBOT_MASTER_HOST:$BUILDBOT_MASTER_PORT \
$BUILDBOT_WORKER_NAME $BUILDBOT_WORKER_PASS \
&& echo "OS: Ubuntu 19.04" > $BUILDBOT_WORKER_NAME/info/host
ADD buildbot.tac $BUILDBOT_WORKER_NAME/buildbot.tac
WORKDIR /home/$BUILDBOT_USER/$BUILDBOT_WORKER_NAME
CMD ["/usr/bin/dumb-init", "../venv/bin/twistd", "--pidfile=", "-ny", "buildbot.tac"]

View File

@ -0,0 +1,40 @@
import fnmatch
import os
import sys
from twisted.application import service
from twisted.python.log import FileLogObserver
from twisted.python.log import ILogObserver
from buildbot_worker.bot import Worker
# setup worker
basedir = os.environ.get("BUILDBOT_BASEDIR",
os.path.abspath(os.path.dirname(__file__)))
application = service.Application('buildbot-worker')
application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
# and worker on the same process!
buildmaster_host = os.environ.get("BUILDMASTER", 'localhost')
port = int(os.environ.get("BUILDMASTER_PORT", 9989))
workername = os.environ.get("WORKERNAME", 'docker')
passwd = os.environ.get("WORKERPASS")
# delete the password from the environ so that it is not leaked in the log
blacklist = os.environ.get("WORKER_ENVIRONMENT_BLACKLIST", "WORKERPASS").split()
for name in list(os.environ.keys()):
for toremove in blacklist:
if fnmatch.fnmatch(name, toremove):
del os.environ[name]
keepalive = 600
umask = None
maxdelay = 300
allow_shutdown = None
maxretries = 10
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
allow_shutdown=allow_shutdown, maxRetries=maxretries)
s.setServiceParent(application)

View File

@ -0,0 +1,13 @@
DOMAIN=example.com
ZCASHD_NETWORK=testnet
ZCASHD_LOGIPS=1
ZCASHD_EXPERIMENTALFEATURES=1
ZCASHD_GEN=0
ZCASHD_RPCUSER=zcashrpc
ZCASHD_RPCPASSWORD=notsecure
ZCASHD_RPCBIND=0.0.0.0
ZCASHD_ALLOWIP=0.0.0.0/0
ZCASHD_TXINDEX=1
ZCASHD_INSIGHTEXPLORER=1
ZCASHD_ZMQPORT=9994
ZCASHD_ZMQBIND=0.0.0.0

View File

@ -0,0 +1,44 @@
FROM debian:9
# Run 'docker build -t zcash-insight-explorer:latest .' from github clone
# docker run -p80:3001 -v $(pwd)/dot-zcash:/home/zcashd/.zcash zcash-insight-explorer
RUN apt-get update \
&& apt-get install -y gnupg2 wget libzmq3-dev git \
&& apt-get -qqy install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python python-zmq \
zlib1g-dev wget curl bsdmainutils automake gettext-base \
\
&& curl -sL https://deb.nodesource.com/setup_8.x | bash - \
&& apt-get install -y nodejs
ARG ZCASH_SIGNING_KEY_ID=6DEF3BAF272766C0
ARG ZCASH_VERSION=2.0.7+2
ARG ZCASHD_USER=zcashd
ARG ZCASHD_UID=2001
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $ZCASH_SIGNING_KEY_ID \
&& echo "deb [arch=amd64] https://apt.z.cash/ jessie main" > /etc/apt/sources.list.d/zcash.list \
&& apt-get update \
&& apt-get install -y zcash=$ZCASH_VERSION
RUN useradd --home-dir /home/$ZCASHD_USER \
--shell /bin/bash \
--create-home \
--uid $ZCASHD_UID\
$ZCASHD_USER
USER $ZCASHD_USER
WORKDIR /home/$ZCASHD_USER/
RUN mkdir .npm-global .zcash .zcash-params
ENV PATH=/home/$ZCASHD_USER/.npm-global/bin:$PATH
ENV NPM_CONFIG_PREFIX=/home/$ZCASHD_USER/.npm-global
RUN npm install -g npm@latest
RUN npm -g install zcash-hackworks/bitcore-node-zcash
RUN bitcore-node create zc
ADD bitcore-node.json.template bitcore-node.json.template
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -0,0 +1,28 @@
{
"network": "$ZCASHD_NETWORK",
"port": 3001,
"services": [
"bitcoind",
"web"
],
"servicesConfig": {
"bitcoind": {
"connect": [
{
"rpchost": "zcashd",
"rpcport": $ZCASHD_RPC_PORT,
"rpcuser": "$ZCASHD_RPCUSER",
"rpcpassword": "$ZCASHD_RPCPASSWORD",
"zmqpubrawtx": "tcp://zcashd:$ZCASHD_ZMQPORT"
}
]
},
"insight-api-zcash": {
"routePrefix": "api"
},
"insight-ui-zcash": {
"apiPrefix": "api",
"routePrefix": ""
}
}
}

View File

@ -0,0 +1,56 @@
---
version: '3'
services:
traefik:
image: traefik:v2.0
command: |
"--log.level=DEBUG"
"--providers.docker=true"
"--providers.docker.exposedbydefault=false"
"--entryPoints.websecure.address=:443"
"--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
"--certificatesresolvers.mytlschallenge.acme.email=sysadmin@z.cash"
"--certificatesresolvers.mytlschallenge.acme.storage=/etc/traefik/acme.json"
"--certificatesresolvers.ecc.acme.tlschallenge=true"
"--certificatesresolvers.ecc.acme.email=sysadmin@z.cash"
"--certificatesresolvers.ecc.acme.storage=/etc/traefik/acme.json"
ports:
- "443:443"
volumes:
- /srv/traefik/acme.json:/etc/traefik/acme.json
- /var/run/docker.sock:/var/run/docker.sock
zcash-insight-explorer:
build: .
environment:
- ZCASHD_NETWORK=$ZCASHD_NETWORK
- ZCASHD_RPCUSER=$ZCASHD_RPCUSER
- ZCASHD_RPCPASSWORD=$ZCASHD_RPCPASSWORD
- ZCASHD_ZMQPORT=$ZCASHD_ZMQPORT
ports:
- "3001:3001"
labels:
"traefik.enable": "true"
"traefik.http.routers.explorer.entrypoints": "websecure"
"traefik.http.routers.explorer.rule": "Host(`explorer.$DOMAIN`)"
"traefik.http.routers.explorer.tls.certresolver": "mytlschallenge"
zcashd:
image: gcr.io/zcash-web/zcashd
environment:
- ZCASHD_NETWORK=$ZCASHD_NETWORK
- ZCASHD_LOGIPS=$ZCASHD_LOGIPS
- ZCASHD_EXPERIMENTALFEATURES=$ZCASHD_EXPERIMENTALFEATURES
- ZCASHD_GEN=$ZCASHD_GEN
- ZCASHD_RPCUSER=$ZCASHD_RPCUSER
- ZCASHD_RPCPASSWORD=$ZCASHD_RPCPASSWORD
- ZCASHD_RPCBIND=$ZCASHD_RPCBIND
- ZCASHD_ALLOWIP=$ZCASHD_ALLOWIP
- ZCASHD_TXINDEX=$ZCASHD_TXINDEX
- ZCASHD_INSIGHTEXPLORER=$ZCASHD_INSIGHTEXPLORER
- ZCASHD_ZMQPORT=$ZCASHD_ZMQPORT
- ZCASHD_ZMQBIND=$ZCASHD_ZMQBIND
volumes:
- /srv/zcash-params:/srv/zcashd/.zcash-params
- /srv/zcash-insight-explorer/.zcashd/zcash:/srv/zcashd/.zcash

View File

@ -0,0 +1,45 @@
#!/bin/bash
set -eo pipefail
if [[ ! -n ${ZCASHD_NETWORK} ]];then
echo "ZCASHD_NETWORK must be set"
exit 1
fi
if [[ ! -n ${ZCASHD_RPCUSER} ]];then
echo "ZCASHD_RPCUSER must be set"
exit 1
fi
if [[ ! -n ${ZCASHD_RPCPASSWORD} ]];then
echo "ZCASHD_RPCPASSWORD must be set"
exit 1
fi
if [[ ! -n ${ZCASHD_ZMQPORT} ]];then
echo "ZCASHD_ZMQPORT must be set"
exit 1
fi
case ${ZCASHD_NETWORK} in
testnet)
export ZCASHD_RPC_PORT=18232
;;
mainnet)
export ZCASHD_RPC_PORT=8232
;;
*)
echo "Error, unknown network: ${ZCASHD_NETWORK}"
exit 1
;;
esac
env | sort
envsubst < bitcore-node.json.template > zc/bitcore-node.json
cd zc
bitcore-node install zcash-hackworks/insight-api-zcash zcash-hackworks/insight-ui-zcash
if [[ $ZCASHD_NETWORK == 'testnet' ]];then
sed -i 's/testnet = false/testnet = true/g' node_modules/insight-ui-zcash/public/src/js/app.js
fi
node_modules/bitcore-node-zcash/bin/bitcore-node start

12
zcashd/.env.example Normal file
View File

@ -0,0 +1,12 @@
ZCASHD_NETWORK=testnet
ZCASHD_LOGIPS=1
ZCASHD_EXPERIMENTALFEATURES=1
ZCASHD_GEN=0
ZCASHD_RPCUSER=zcashrpc
ZCASHD_RPCPASSWORD=notsecure
ZCASHD_RPCBIND=0.0.0.0
ZCASHD_ALLOWIP=0.0.0.0/0
ZCASHD_TXINDEX=1
ZCASHD_INSIGHTEXPLORER=1
ZCASHD_ZMQPORT=9994
ZCASHD_ZMQBIND=0.0.0.0

29
zcashd/Dockerfile Normal file
View File

@ -0,0 +1,29 @@
FROM debian:9
RUN apt-get update \
&& apt-get install -y gnupg2 apt-transport-https curl
ARG ZCASH_SIGNING_KEY_ID=6DEF3BAF272766C0
ARG ZCASH_VERSION=2.0.7+2
ARG ZCASHD_USER=zcashd
ARG ZCASHD_UID=2001
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $ZCASH_SIGNING_KEY_ID \
&& echo "deb [arch=amd64] https://apt.z.cash/ jessie main" > /etc/apt/sources.list.d/zcash.list \
&& apt-get update \
&& apt-get install -y zcash=$ZCASH_VERSION
RUN useradd --home-dir /srv/$ZCASHD_USER \
--shell /bin/bash \
--create-home \
--uid $ZCASHD_UID\
$ZCASHD_USER
USER $ZCASHD_USER
WORKDIR /srv/zcashd
RUN mkdir -p /srv/$ZCASHD_USER/.zcash/ \
&& touch /srv/$ZCASHD_USER/.zcash/zcash.conf
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
HEALTHCHECK --interval=5m --timeout=3s \
CMD zcash-cli getinfo || exit 1

33
zcashd/docker-compose.yml Normal file
View File

@ -0,0 +1,33 @@
---
version: '3'
services:
init_container:
image: busybox
command: |
sh -c "chown -R 2001 /srv/zcashd/"
volumes:
- zcash-params:/srv/zcashd/.zcash-params
- zcash:/srv/zcashd/.zcash
zcashd:
image: gcr.io/zcash-web/zcashd
environment:
- ZCASHD_NETWORK=$ZCASHD_NETWORK
- ZCASHD_LOGIPS=$ZCASHD_LOGIPS
- ZCASHD_EXPERIMENTALFEATURES=$ZCASHD_EXPERIMENTALFEATURES
- ZCASHD_GEN=$ZCASHD_GEN
- ZCASHD_RPCUSER=$ZCASHD_RPCUSER
- ZCASHD_RPCPASSWORD=$ZCASHD_RPCPASSWORD
- ZCASHD_RPCBIND=$ZCASHD_RPCBIND
- ZCASHD_ALLOWIP=$ZCASHD_ALLOWIP
- ZCASHD_TXINDEX=$ZCASHD_TXINDEX
- ZCASHD_INSIGHTEXPLORER=$ZCASHD_INSIGHTEXPLORER
- ZCASHD_ZMQPORT=$ZCASHD_ZMQPORT
- ZCASHD_ZMQBIND=$ZCASHD_ZMQBIND
volumes:
- zcash-params:/srv/zcashd/.zcash-params
- zcash:/srv/zcashd/.zcash
volumes:
zcash:
zcash-params:

51
zcashd/entrypoint.sh Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash
set -eo pipefail
env | sort | grep ZCASHD || true
export ZCASHD_CMD='zcashd -printtoconsole'
if [[ ! -n ${ZCASHD_NETWORK} ]];then
echo "ZCASHD_NETWORK must be set"
echo "For example: docker run --rm -e ZCASHD_NETWORK=testnet gcr.io/zcash-web/zcashd"
exit 1
fi
case ${ZCASHD_NETWORK} in
testnet)
ZCASHD_CMD+=" -testnet -addnode=testnet.z.cash "
;;
mainnet)
ZCASHD_CMD+=" -addnode=mainnet.z.cash "
;;
*)
echo "Error, unknown network: ${ZCASHD_NETWORK}"
exit 1
;;
esac
if [[ -n "${ZCASHD_SHOWMETRICS}" ]];then ZCASHD_CMD+=" -showmetrics=${ZCASHD_SHOWMETRICS}";fi
if [[ -n "${ZCASHD_LOGIPS}" ]];then ZCASHD_CMD+=" -logips=${ZCASHD_LOGIPS}";fi
if [[ -n "${ZCASHD_EXPERIMENTALFEATURES}" ]];then ZCASHD_CMD+=" -experimentalfeatures=${ZCASHD_EXPERIMENTALFEATURES}";fi
if [[ -n "${ZCASHD_GEN}" ]];then ZCASHD_CMD+=" -gen=${ZCASHD_GEN}";fi
if [[ -n "${ZCASHD_ZSHIELDCOINBASE}" ]];then ZCASHD_CMD+=" -zshieldcoinbase=${ZCASHD_ZSHIELDCOINBASE}";fi
if [[ -n "${ZCASHD_RPCUSER}" ]];then ZCASHD_CMD+=" -rpcuser=${ZCASHD_RPCUSER}";fi
if [[ -n "${ZCASHD_RPCPASSWORD}" ]];then ZCASHD_CMD+=" -rpcpassword=${ZCASHD_RPCPASSWORD}";fi
if [[ -n "${ZCASHD_RPCBIND}" ]];then ZCASHD_CMD+=" -rpcbind=${ZCASHD_RPCBIND}";fi
if [[ -n "${ZCASHD_ALLOWIP}" ]];then ZCASHD_CMD+=" -rpcallowip=${ZCASHD_ALLOWIP}";fi
if [[ -n "${ZCASHD_TXINDEX}" ]];then ZCASHD_CMD+=" -txindex";fi
if [[ -n "${ZCASHD_INSIGHTEXPLORER}" ]];then ZCASHD_CMD+=" -insightexplorer";fi
if [[ -n "${ZCASHD_ZMQPORT}" && -n "${ZCASHD_ZMQBIND}" ]];then
ZCASHD_CMD+=" -zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
ZCASHD_CMD+=" -zmqpubhashtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
ZCASHD_CMD+=" -zmqpubrawblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
ZCASHD_CMD+=" -zmqpubrawtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
ZCASHD_CMD+=" -zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
fi
zcash-fetch-params
touch .zcash/zcash.conf
echo "Starting: ${ZCASHD_CMD}"
${ZCASHD_CMD}