Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ services: docker

matrix:
include:
- env: VERSION=0.14.0.5 BUILD_PATH=0.14
- env: VERSION=0.14.0.5 BUILD_PATH=0.14/alpine
- env: VERSION=0.16.1.1 BUILD_PATH=0.16
- env: VERSION=0.16.1.1 BUILD_PATH=0.16/alpine

branches:
only:
Expand Down
44 changes: 44 additions & 0 deletions 0.16/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
FROM debian:stable-slim

LABEL maintainer.0="Jeff Hodges (@jhodges10)" \
maintainer.1="Samuel Prado (@skateonrails)"

RUN useradd -r dash \
&& apt-get update -y \
&& apt-get install -y curl gnupg unzip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
# Adding gpg for Dash files
&& curl https://keybase.io/udjinm6/pgp_keys.asc | gpg --import \
&& curl https://keybase.io/nmarley/pgp_keys.asc | gpg --import \
# Adding gpg for gosu
&& gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4

ENV GOSU_VERSION=1.11

RUN curl -o /usr/local/bin/gosu -fSL https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-$(dpkg --print-architecture | awk -F- '{ print $NF }') \
&& curl -o /usr/local/bin/gosu.asc -fSL https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-$(dpkg --print-architecture | awk -F- '{ print $NF }').asc \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu

ENV DASH_VERSION=0.16.1.1
ENV DASH_FOLDER_VERSION=0.16.0
ENV DASH_SHASUM="8803928bd18e9515f1254f97751eb6e537a084d66111ce7968eafb23e26bf3a5 dashcore-${DASH_VERSION}-x86_64-linux-gnu.tar.gz"
ENV DASH_DATA=/home/dash/.dashcore \
PATH=/opt/dashcore-${DASH_FOLDER_VERSION}/bin:$PATH

RUN curl -SLO https://github.com/dashpay/dash/releases/download/v${DASH_VERSION}/dashcore-${DASH_VERSION}-x86_64-linux-gnu.tar.gz \
&& echo "${DASH_SHASUM}" | sha256sum -c \
&& tar -xzf dashcore-${DASH_VERSION}-x86_64-linux-gnu.tar.gz -C /opt \
&& rm *.tar.gz

VOLUME ["/home/dash/.dashcore"]

COPY docker-entrypoint.sh /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 9998 9999 18332 19998 19999

CMD ["dashd"]
148 changes: 148 additions & 0 deletions 0.16/alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# Build stage for BerkeleyDB
FROM alpine as berkeleydb

RUN apk --no-cache add autoconf
RUN apk --no-cache add automake
RUN apk --no-cache add build-base
RUN apk --no-cache add libressl

ENV BERKELEYDB_VERSION=db-4.8.30.NC
ENV BERKELEYDB_PREFIX=/opt/${BERKELEYDB_VERSION}

RUN wget https://download.oracle.com/berkeley-db/${BERKELEYDB_VERSION}.tar.gz
RUN tar -xzf *.tar.gz
RUN sed s/__atomic_compare_exchange/__atomic_compare_exchange_db/g -i ${BERKELEYDB_VERSION}/dbinc/atomic.h
RUN mkdir -p ${BERKELEYDB_PREFIX}

WORKDIR /${BERKELEYDB_VERSION}/build_unix

RUN ../dist/configure --enable-cxx --disable-shared --with-pic --prefix=${BERKELEYDB_PREFIX}
RUN make -j4
RUN make install
RUN rm -rf ${BERKELEYDB_PREFIX}/docs

FROM alpine as chiabls

RUN apk --no-cache add autoconf
RUN apk --no-cache add automake
RUN apk --no-cache add build-base
RUN apk --no-cache add libressl
RUN apk --no-cache add git
RUN apk --no-cache add cmake
RUN apk --no-cache add python3-dev

ENV CHIA_BLS_PREFIX=/opt/chiabls

RUN set -x \
&& git clone https://github.com/codablock/bls-signatures.git bls-signatures \
&& cd bls-signatures \
&& git fetch origin \
&& git checkout dash \
&& git submodule update --init --recursive \
&& mkdir build \
&& cd build \
&& cmake -DCMAKE_INSTALL_PREFIX:PATH=${CHIA_BLS_PREFIX} \
-DCMAKE_PREFIX_PATH=${CHIA_BLS_PREFIX} \
-DSTLIB=ON -DSHLIB=OFF -DSTBIN=ON \
-DCMAKE_BUILD_TYPE=DEBUG \
-DDEBUG=ON \
-DOPSYS=LINUX -DCMAKE_SYSTEM_NAME=Linux -DWSIZE=64 \
-DCMAKE_C_FLAGS_DEBUG="-g -O1" \
.. \
&& cmake --build . --target install --config Release -- -j6

RUN ls -la ${CHIA_BLS_PREFIX}

# Build stage for Dash
FROM alpine as dash

COPY --from=berkeleydb /opt /opt
COPY --from=chiabls /opt /opt

RUN apk --no-cache add autoconf
RUN apk --no-cache add automake
RUN apk --no-cache add boost-dev
RUN apk --no-cache add build-base
RUN apk --no-cache add chrpath
RUN apk --no-cache add file
RUN apk --no-cache add gnupg
RUN apk --no-cache add libevent-dev
RUN apk --no-cache add libressl
RUN apk --no-cache add libressl-dev
RUN apk --no-cache add libsodium-dev
RUN apk --no-cache add libtool
RUN apk --no-cache add linux-headers
RUN apk --no-cache add protobuf-dev
RUN apk --no-cache add zeromq-dev
RUN apk --no-cache add gmp gmp-dev
RUN apk --no-cache add libexecinfo-dev

ENV DASH_VERSION=0.16.1.1
ENV DASH_PREFIX=/opt/dash-${DASH_VERSION}
ENV DASH_SHASUM="98bc0f50c65ca1a149c95f1b87ae926457e0e0623af7a1e2a7e345fdfe0eecc8 v${DASH_VERSION}.tar.gz"

RUN wget https://github.com/dashpay/dash/archive/v${DASH_VERSION}.tar.gz
RUN echo "${DASH_SHASUM}"
RUN echo "${DASH_SHASUM}" | sha256sum -c
RUN tar -xzf *.tar.gz
RUN ls -la
RUN ls -la /opt/chiabls/lib/.*

WORKDIR /dash-${DASH_VERSION}

RUN sed -i '/AC_PREREQ/a\AR_FLAGS=cr' src/univalue/configure.ac
RUN sed -i '/AX_PROG_CC_FOR_BUILD/a\AR_FLAGS=cr' src/secp256k1/configure.ac
RUN sed -i s:sys/fcntl.h:fcntl.h: src/compat.h
RUN ./autogen.sh
RUN ./configure CFLAGS="-g -O1" \
LDFLAGS="-L/opt/db-4.8.30.NC/lib/ -L/opt/chiabls/lib/" \
CPPFLAGS="-I/opt/db-4.8.30.NC/include/ -I/opt/chiabls/include/ -I/opt/chiabls/include/relic/" \
CXXFLAGS="-g -O2 -Wall -Wextra -Wformat -Wvla -Wformat-security -Wno-unused-parameter" \
--prefix=${DASH_PREFIX} \
--mandir=/usr/share/man \
--disable-tests \
--disable-bench \
--disable-ccache \
--with-gui=no \
--with-utils \
--with-libs \
--with-daemon
RUN make
RUN make install
RUN strip ${DASH_PREFIX}/bin/dash-cli
RUN strip ${DASH_PREFIX}/bin/dash-tx
RUN strip ${DASH_PREFIX}/bin/dashd
RUN strip ${DASH_PREFIX}/lib/libdashconsensus.a
RUN strip ${DASH_PREFIX}/lib/libdashconsensus.so.0.0.0

# Build stage for compiled artifacts
FROM alpine

LABEL maintainer.0="Jeff Hodges (@jhodges10)" \
maintainer.1="Samuel Prado (@skateonrails)"

RUN adduser -S dash
RUN apk --no-cache add \
boost \
boost-program_options \
curl \
libevent \
libressl \
libzmq \
su-exec

ENV DASH_DATA=/home/dash/.dashcore
ENV DASH_VERSION=0.16.1.1
ENV DASH_PREFIX=/opt/dash-${DASH_VERSION}
ENV PATH=${DASH_PREFIX}/bin:$PATH

COPY --from=dash /opt /opt
COPY docker-entrypoint.sh /entrypoint.sh

VOLUME ["/home/dash/.dashcore"]

EXPOSE 9998 9999 18332 19998 19999

ENTRYPOINT ["/entrypoint.sh"]

CMD ["dashd"]
26 changes: 26 additions & 0 deletions 0.16/alpine/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/sh
set -e

if [ $(echo "$1" | cut -c1) = "-" ]; then
echo "$0: assuming arguments for dashd"

set -- dashd "$@"
fi

if [ $(echo "$1" | cut -c1) = "-" ] || [ "$1" = "dashd" ]; then
mkdir -p "$DASH_DATA"
chmod 700 "$DASH_DATA"
chown -R dash "$DASH_DATA"

echo "$0: setting data directory to $DASH_DATA"

set -- "$@" -datadir="$DASH_DATA"
fi

if [ "$1" = "dashd" ] || [ "$1" = "dash-cli" ] || [ "$1" = "dash-tx" ]; then
echo
exec su-exec dash "$@"
fi

echo
exec "$@"
26 changes: 26 additions & 0 deletions 0.16/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/sh
set -e

if [ $(echo "$1" | cut -c1) = "-" ]; then
echo "$0: assuming arguments for dashd"

set -- dashd "$@"
fi

if [ $(echo "$1" | cut -c1) = "-" ] || [ "$1" = "dashd" ]; then
mkdir -p "$DASH_DATA"
chmod 700 "$DASH_DATA"
chown -R dash "$DASH_DATA"

echo "$0: setting data directory to $DASH_DATA"

set -- "$@" -datadir="$DASH_DATA"
fi

if [ "$1" = "dashd" ] || [ "$1" = "dash-cli" ] || [ "$1" = "dash-tx" ]; then
echo
exec gosu dash "$@"
fi

echo
exec "$@"
15 changes: 15 additions & 0 deletions HowTo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Making a new release

1. Duplicate version folder
2. Update the DASH_CORE version in all the right places
3. Calculate the hash for the latest version by modifying the below link, downloading the file, and then dropping the zip file into this sha256 generator
> https://codeload.github.com/dashpay/dash/archive/v0.16.1.1.tar.gz

> https://emn178.github.io/online-tools/sha256_checksum.html

4. Testing locally, you'll run:

```
VERSION=0.16.1.1 BUILD_PATH=0.16
VERSION=0.16.1.1 BUILD_PATH=0.16/alpine
```
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ A Dash Core docker image.

## Tags

- `0.14.0.5-alpine`, `0.14-alpine` ([0.14/alpine/Dockerfile](https://github.com/MindhiveCode/docker-dash-core/blob/master/0.14/alpine/Dockerfile))
- `0.14.0.5`, `0.14` ([0.14/Dockerfile](https://github.com/MindhiveCode/docker-dash-core/blob/master/0.14/Dockerfile))
- `0.16.1.1-alpine`, `0.16-alpine` ([0.14/alpine/Dockerfile](https://github.com/MindhiveCode/docker-dash-core/blob/master/0.14/alpine/Dockerfile))
- `0.16.1.1`, `0.16` ([0.14/Dockerfile](https://github.com/MindhiveCode/docker-dash-core/blob/master/0.14/Dockerfile))

## What is Dash?
_from [dashwiki](https://github.com/dashpay/dash/wiki)_
Expand Down