forked from oxen-io/oxen-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
140 lines (119 loc) · 4.74 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Multistage docker build, requires docker 17.05
# TO RUN
# docker build -t oxen-daemon-image .
# TO COLLECT BINARIES
# ./util/build_scripts/collect_from_docker_container.sh
# builder stage
FROM ubuntu:16.04 as builder
RUN set -ex && \
apt-get update && \
apt-get install -y curl apt-transport-https eatmydata && \
echo 'deb https://apt.kitware.com/ubuntu/ xenial main' >/etc/apt/sources.list.d/kitware-cmake.list && \
curl https://apt.kitware.com/keys/kitware-archive-latest.asc | apt-key add - && \
apt-get update && \
eatmydata apt-get --no-install-recommends --yes install \
ca-certificates \
cmake \
g++ \
make \
pkg-config \
graphviz \
doxygen \
git \
libtool-bin \
autoconf \
automake \
bzip2 \
xsltproc \
gperf
WORKDIR /usr/local/src
ARG OPENSSL_VERSION=1.1.1g
ARG OPENSSL_HASH=ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46
RUN set -ex \
&& curl -s -O https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
&& echo "${OPENSSL_HASH} openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c \
&& tar xf openssl-${OPENSSL_VERSION}.tar.gz \
&& cd openssl-${OPENSSL_VERSION} \
&& ./Configure --prefix=/usr linux-x86_64 no-shared --static \
&& make -j$(nproc) \
&& make install_sw -j$(nproc)
ARG BOOST_VERSION=1_72_0
ARG BOOST_VERSION_DOT=1.72.0
ARG BOOST_HASH=59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722
RUN set -ex \
&& curl -s -L -o boost_${BOOST_VERSION}.tar.bz2 https://dl.bintray.com/boostorg/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION}.tar.bz2 \
&& echo "${BOOST_HASH} boost_${BOOST_VERSION}.tar.bz2" | sha256sum -c \
&& tar xf boost_${BOOST_VERSION}.tar.bz2 \
&& cd boost_${BOOST_VERSION} \
&& ./bootstrap.sh \
&& ./b2 --prefix=/usr --build-type=minimal link=static runtime-link=static \
--with-atomic --with-chrono --with-date_time --with-filesystem --with-program_options \
--with-regex --with-serialization --with-system --with-thread --with-locale \
threading=multi threadapi=pthread cxxflags=-fPIC \
-j$(nproc) install
ARG SODIUM_VERSION=1.0.18-RELEASE
ARG SODIUM_HASH=940ef42797baa0278df6b7fd9e67c7590f87744b
RUN set -ex \
&& git clone https://github.com/jedisct1/libsodium.git -b ${SODIUM_VERSION} --depth=1 \
&& cd libsodium \
&& test `git rev-parse HEAD` = ${SODIUM_HASH} || exit 1 \
&& ./autogen.sh \
&& ./configure --enable-static --disable-shared --prefix=/usr \
&& make -j$(nproc) \
&& make check \
&& make install
# Readline
# ARG READLINE_VERSION=8.0
# ARG READLINE_HASH=e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461
# RUN set -ex \
# && curl -s -O https://ftp.gnu.org/gnu/readline/readline-${READLINE_VERSION}.tar.gz \
# && echo "${READLINE_HASH} readline-${READLINE_VERSION}.tar.gz" | sha256sum -c \
# && tar xf readline-${READLINE_VERSION}.tar.gz \
# && cd readline-${READLINE_VERSION} \
# && ./configure --prefix=/usr --disable-shared \
# && make -j$(nproc) \
# && make install
# Sqlite3
ARG SQLITE_VERSION=3310100
ARG SQLITE_HASH=62284efebc05a76f909c580ffa5c008a7d22a1287285d68b7825a2b6b51949ae
RUN set -ex \
&& curl -s -O https://sqlite.org/2020/sqlite-autoconf-${SQLITE_VERSION}.tar.gz \
&& echo "${SQLITE_HASH} sqlite-autoconf-${SQLITE_VERSION}.tar.gz" | sha256sum -c \
&& tar xf sqlite-autoconf-${SQLITE_VERSION}.tar.gz \
&& cd sqlite-autoconf-${SQLITE_VERSION} \
&& ./configure --disable-shared --prefix=/usr --with-pic \
&& make -j$(nproc) \
&& make install
WORKDIR /src
COPY . .
RUN set -ex && \
git submodule update --init --recursive && \
rm -rf build/release && mkdir -p build/release && cd build/release && \
cmake -DSTATIC=ON -DARCH=x86-64 -DCMAKE_BUILD_TYPE=Release ../.. && \
make -j$(nproc) VERBOSE=1
RUN set -ex && \
ldd /src/build/release/bin/oxend
# runtime stage
FROM ubuntu:16.04
RUN set -ex && \
apt-get update && \
apt-get --no-install-recommends --yes install ca-certificates && \
apt-get clean && \
rm -rf /var/lib/apt
COPY --from=builder /src/build/release/bin /usr/local/bin/
# Create oxen user
RUN adduser --system --group --disabled-password oxen && \
mkdir -p /wallet /home/oxen/.oxen && \
chown -R oxen:oxen /home/oxen/.oxen && \
chown -R oxen:oxen /wallet
# Contains the blockchain
VOLUME /home/oxen/.oxen
# Generate your wallet via accessing the container and run:
# cd /wallet
# oxen-wallet-cli
VOLUME /wallet
EXPOSE 22022
EXPOSE 22023
# switch to user oxen
USER oxen
ENTRYPOINT ["oxend", "--p2p-bind-ip=0.0.0.0", "--p2p-bind-port=22022", "--rpc-bind-ip=0.0.0.0", "--rpc-bind-port=22023", "--non-interactive", "--confirm-external-bind"]