Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Docker containers for a DAO seednode #3095

Closed
wants to merge 72 commits into from
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
f56d5cb
first checkin of new dao seednode docker files
mrosseel Apr 8, 2019
c802f14
Adding rpcHost option, seednode docker fixes
mrosseel Apr 8, 2019
eaa4e72
Merge branch 'rc_v1.0.0' of https://github.com/ManfredKarrer/bisq int…
mrosseel Apr 8, 2019
1f3a4b9
checkout correct branch, fix rpchost option
mrosseel Apr 8, 2019
b9aa202
Add logs to assess correct functioning of the seed node
mrosseel Apr 8, 2019
c64ce01
fix dockerfile
mrosseel Apr 9, 2019
6201679
add host
mrosseel Apr 12, 2019
faf7ff0
Merge branch 'rc_v1.0.0' of https://github.com/ManfredKarrer/bisq int…
mrosseel Apr 12, 2019
00658ef
limit btc node usage
mrosseel Apr 12, 2019
4c1a280
Clean up logging
mrosseel Apr 12, 2019
bffb1fa
speed it up
mrosseel Apr 12, 2019
ab2ed5b
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Apr 24, 2019
a3a35c3
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Apr 29, 2019
ed26990
protect against crashes
mrosseel Apr 29, 2019
1365de9
Fix APP_NAME, revert logging/unnecessary edits
mrosseel Apr 29, 2019
0c032b6
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel May 5, 2019
7c1b957
Storing backup files etc in local dir, not inside the container
mrosseel May 9, 2019
d80bd37
no more overlapping volumes
mrosseel May 9, 2019
2460830
fix notify bug
mrosseel May 9, 2019
44bdb02
btcd gracefully shuts down on certain errors so doesn't restart
mrosseel May 17, 2019
6189651
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel May 30, 2019
e5b79ac
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Jun 4, 2019
6bbb19c
add depends_on so notifications don't error out at startup
mrosseel Jun 6, 2019
ca01a7a
Wait for bitcoin rpc port to be available before connecting
mrosseel Jun 14, 2019
4ce6418
correct path
mrosseel Jun 14, 2019
ad3e351
make executable
mrosseel Jun 14, 2019
e7763f8
increase timeout (just in case)
mrosseel Jun 14, 2019
1fec30f
switch dependency
mrosseel Jun 14, 2019
0918042
add while loop
mrosseel Jul 12, 2019
5c08ada
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Jul 12, 2019
96d4a6d
fix quotes
mrosseel Jul 12, 2019
ea16ded
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Jul 21, 2019
4b03764
remove stray line
mrosseel Jul 21, 2019
65807f0
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Jul 22, 2019
916e69b
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Aug 6, 2019
f984f11
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Aug 15, 2019
19a7f91
completing readme for docker installation
mrosseel Aug 15, 2019
5365ac8
move to bitcoin 0.18, readme changes
mrosseel Aug 15, 2019
4e189b5
adding collectd, removing networking
mrosseel Aug 19, 2019
1392be3
Working setup for collectd
mrosseel Aug 22, 2019
6dc7868
Closed ports to docker only, moved certs to root of seednode, add btcd
mrosseel Aug 22, 2019
5e2415b
Correct the ip address of btcd
mrosseel Aug 25, 2019
32432f5
Use builder docker, pass url/branch to indicate code to build
mrosseel Aug 27, 2019
53cd768
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Sep 13, 2019
2968a3f
Merge branch 'master' of github.com:bisq-network/bisq into seednode-c…
mrosseel Sep 13, 2019
f076f27
Merge branch 'seednode-collectd' into dao-seednode
mrosseel Sep 13, 2019
b35adb9
Used gradle:jdk10 docker image to build the code
mrosseel Sep 15, 2019
4a94b52
Adapted rpcallowip to bitcoin core 0.18.1, removed wait-for-it.sh
mrosseel Sep 16, 2019
f52a234
Take the start script from parent dir, not the one checked out
mrosseel Sep 18, 2019
274149a
Fixed copy of start script
mrosseel Sep 18, 2019
765b8b0
Added block notify host
mrosseel Sep 18, 2019
b9a38ce
Modified rpc host
mrosseel Sep 18, 2019
81bf68d
Corrected blocknotify host
mrosseel Sep 18, 2019
9a831a2
Made startup work without copying everything, docker-compose cleanup
mrosseel Sep 20, 2019
b047a96
Create own image for nginx
mrosseel Sep 22, 2019
065f0c6
Created docker-compose files to start a seednode
mrosseel Apr 8, 2019
4ace3f0
Removed RPCService changes
mrosseel Sep 22, 2019
2baea32
Add alpine-needed user
mrosseel Sep 24, 2019
5c49de0
Fix [alert] 8#8: connect() failed (2: No such file or directory)
mrosseel Sep 24, 2019
85bc99f
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Oct 26, 2019
c8287db
Fixed conflict by using git pull instead of fetch
mrosseel Oct 26, 2019
30e2d72
Save commit from builder in a file
mrosseel Oct 26, 2019
3448994
Merge remote-tracking branch 'upstream/master' into dao-seednode
mrosseel Nov 4, 2019
6064f29
Merge branch 'dao-seednode' of github.com:mrosseel/bisq into dao-seed…
mrosseel Nov 4, 2019
47965eb
Increase memory to stay in line with recommendations
mrosseel Nov 4, 2019
d76662d
Increased Max memory to be in sync with previous memory commit
mrosseel Nov 5, 2019
d23408f
Merge remote-tracking branch 'upstream/master' into dao-seednode
mrosseel Nov 12, 2019
f5fcabb
Updated readme for seednode
mrosseel Dec 6, 2019
5696b68
Cleaned up startup script
mrosseel Dec 6, 2019
ed34f0b
Merge branch 'master' of github.com:bisq-network/bisq into dao-seednode
mrosseel Dec 6, 2019
c635429
Upgrade gradle, gradle available for jdk11 is too old.
mrosseel Dec 6, 2019
5364709
Fixed bug with fixed onion address
mrosseel Dec 20, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
63 changes: 46 additions & 17 deletions seednode/docker-compose.yml
Expand Up @@ -4,11 +4,12 @@ services:
seednode:
container_name: seednode
restart: unless-stopped
env_file:
- .env
build:
context: .
dockerfile: docker/prod/Dockerfile
args:
SEEDNODE_URL: ${SEEDNODE_URL}
SEEDNODE_BRANCH: ${SEEDNODE_BRANCH}
image: seednode
depends_on:
- bitcoin-core
Expand All @@ -17,10 +18,8 @@ services:
- 9010:9010
- 9011:9011
expose:
- 6969
- 5120
networks:
bisq_net:
ipv4_address: 172.28.1.3
volumes:
- ./local:${WORKING_DIR}
environment:
Expand All @@ -33,11 +32,27 @@ services:
- NODE_PORT=8000
- DAO_ACTIVATED=true
- FULL_DAO_NODE=true
- RPC_HOST=172.28.1.4
- RPC_HOST=172.28.1.1
- RPC_PORT=8332
- RPC_USER=${RPC_USER}
- RPC_PASSWORD=${RPC_PASSWORD}
- RPC_BLOCKNOTIFY_PORT=5120
networks:
bisq_net:
ipv4_address: 172.28.1.3

collectd:
container_name: collectd
restart: unless-stopped
build:
context: ./docker/prod
dockerfile: Dockerfile-collectd
image: collectd
depends_on:
- seednode
networks:
bisq_net:
ipv4_address: 172.28.1.4

bitcoin-core:
build:
Expand All @@ -62,19 +77,33 @@ services:
ports:
- 8333:8333
- 18443:18443
networks:
bisq_net:
ipv4_address: 172.28.1.4
# environment:
# - BITCOIN_DATA=${BTC_DATA_DIR}
volumes:
- ./docker/prod/blocknotify:/home/bitcoin/.bitcoin/blocknotify
- ${BTC_DATA_DIR}:/home/bitcoin/.bitcoin/
networks:
bisq_net:
ipv4_address: 172.28.1.1

networks:
bisq_net:
ipam:
driver: default
config:
- subnet: 172.28.0.0/16
nginx:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the nginx container necessary?

image: nginx:latest
container_name: collectd_nginx
# context: ./docker
volumes:
- ./docker/prod/nginx.conf:/etc/nginx/nginx.conf
- ./cert.crt:/etc/nginx/cert.crt
- ./cert.key:/etc/nginx/cert.key
depends_on:
- collectd
expose:
- "2003"
networks:
bisq_net:
ipv4_address: 172.28.1.5

# the network is needed because nginx can't resolve dns names in its .conf file, so we use hard-coded ip addresses.
networks:
bisq_net:
ipam:
driver: default
config:
- subnet: 172.28.1.0/24
23 changes: 15 additions & 8 deletions seednode/docker/prod/Dockerfile
@@ -1,10 +1,17 @@
FROM openjdk:11
ENV APP_NAME=seednode
ENV NODE_PORT=8000
# first the builder builds the executables
FROM gradle:jdk11 as builder
ARG SEEDNODE_URL
ARG SEEDNODE_BRANCH
RUN git clone $SEEDNODE_URL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already in the same repository as the seednode code, we can use local data instead of fetching it from github

WORKDIR /home/gradle/bisq/seednode
RUN git checkout $SEEDNODE_BRANCH
RUN gradle build
RUN chmod +x ./build/app/bin/bisq-seednode

# then the actual image is created, without gradle, using just the artifacts from the builder
FROM openjdk:10
EXPOSE 8000
EXPOSE 5120
COPY --from=builder /home/gradle/bisq /home/bisq
WORKDIR /home/bisq/seednode
COPY ./build/ ./build/
COPY ./docker/*.sh ./docker/
CMD ./docker/wait-for-it.sh 172.28.1.4:8332 --timeout=180 --strict -- nohup sh ./docker/startSeedNode.sh
#CMD sleep 100000
CMD ./docker/startSeedNode.sh

10 changes: 10 additions & 0 deletions seednode/docker/prod/Dockerfile-collectd
@@ -0,0 +1,10 @@
FROM ubuntu:bionic

RUN apt-get update && apt-get install -y \
collectd-core \
openjdk-11-jre
COPY collectd.conf /etc/collectd/collectd.conf
COPY openjdk.conf /etc/ld.so.conf.d/openjdk.conf
RUN ldconfig
CMD /bin/bash -c "/usr/sbin/collectd && trap : TERM INT; sleep infinity & wait"

145 changes: 145 additions & 0 deletions seednode/docker/prod/collectd.conf
@@ -0,0 +1,145 @@
Hostname "3ck4nimvkavyrgd5.onion"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Hostname "3ck4nimvkavyrgd5.onion"

Interval 30

LoadPlugin syslog
<Plugin syslog>
LogLevel info
</Plugin>

LoadPlugin logfile
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin fhcount
LoadPlugin interface
LoadPlugin java
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin swap
LoadPlugin write_graphite

# for debugging purposes
<Plugin logfile>
LogLevel info
File "/var/log/collectd.log"
Timestamp true
PrintSeverity true
</Plugin>

<Plugin cpu>
ReportByCpu true
ValuesPercentage true
</Plugin>

<Plugin df>
MountPoint "/"
</Plugin>

<Plugin disk>
Disk "/sd[ab]/"
</Plugin>

<Plugin fhcount>
ValuesAbsolute false
ValuesPercentage true
</Plugin>

<Plugin interface>
Interface "eth0"
</Plugin>

<Plugin java>
JVMArg "-verbose:jni"
JVMArg "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar:/usr/share/collectd/java/generic-jmx.jar"

LoadPlugin "org.collectd.java.GenericJMX"
<Plugin "GenericJMX">
# Generic heap/nonheap memory usage.
<MBean "memory">
ObjectName "java.lang:type=Memory"
#InstanceFrom ""
InstancePrefix "memory"

# Creates four values: committed, init, max, used
<Value>
Type "memory"
#InstancePrefix ""
#InstanceFrom ""
Table true
Attribute "HeapMemoryUsage"
InstancePrefix "heap-"
</Value>

# Creates four values: committed, init, max, used
<Value>
Type "memory"
#InstancePrefix ""
#InstanceFrom ""
Table true
Attribute "NonHeapMemoryUsage"
InstancePrefix "nonheap-"
</Value>
</MBean>

# Memory usage by memory pool.
<MBean "memory_pool">
ObjectName "java.lang:type=MemoryPool,*"
InstancePrefix "memory_pool-"
InstanceFrom "name"

<Value>
Type "memory"
#InstancePrefix ""
#InstanceFrom ""
Table true
Attribute "Usage"
</Value>
</MBean>

<Connection>
ServiceURL "service:jmx:rmi:///jndi/rmi://172.28.1.3:6969/jmxrmi"
Collect "memory_pool"
Collect "memory"
</Connection>

# See /usr/share/doc/collectd/examples/GenericJMX.conf
# for an example config.
</Plugin>
</Plugin>

#<Plugin load>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't comment out lines, remove them

# ReportRelative true
#</Plugin>

#<Plugin memory>
# ValuesAbsolute true
# ValuesPercentage false
#</Plugin>

#<Plugin processes>
# Process "name"
# ProcessMatch "foobar" "/usr/bin/perl foobar\\.pl.*"
#</Plugin>

#<Plugin swap>
# ReportByDevice false
# ReportBytes true
#</Plugin>

<Plugin write_graphite>
<Node "node">
Host "172.28.1.5"
Port "2003"
Protocol "tcp"
ReconnectInterval 0
LogSendErrors false
Prefix "servers."
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
SeparateInstances false
PreserveSeparator false
DropDuplicateFields false
</Node>
</Plugin>
50 changes: 50 additions & 0 deletions seednode/docker/prod/nginx.conf
@@ -0,0 +1,50 @@
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
worker_connections 768;
# multi_accept on;
}

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

gzip off;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

stream {
log_format basic '$remote_addr [$time_local] '
'$protocol Status $status Sent $bytes_sent Received $bytes_received '
'Time $session_time';

error_log syslog:server=unix:/dev/log;
access_log syslog:server=unix:/dev/log basic;

server {
listen 2003;
allow 172.28.1.4;
deny all;
Comment on lines +37 to +38
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
allow 172.28.1.4;
deny all;

proxy_pass monitor.bisq.network:2002;
proxy_ssl on;

proxy_ssl_certificate /etc/nginx/cert.crt;
proxy_ssl_certificate_key /etc/nginx/cert.key;

proxy_ssl_session_reuse on;
}
}
1 change: 1 addition & 0 deletions seednode/docker/prod/openjdk.conf
@@ -0,0 +1 @@
/usr/lib/jvm/java-11-openjdk-amd64/lib/server
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

2 changes: 1 addition & 1 deletion seednode/docker/startSeedNode.sh
Expand Up @@ -63,7 +63,7 @@ do

echo `date` "(Re)-starting node"

JAVA_OPTS='-XX:+UseG1GC -Xms512m -Xmx2000m' ./build/app/bin/bisq-seednode $ARGS 2>./error.log
JAVA_OPTS='-Xms512M -Xmx2000M -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false' ./build/app/bin/bisq-seednode $ARGS 2>./error.log

echo `date` "node terminated unexpectedly!!"

Expand Down