forked from OneGramTech/onegram-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile.OGC
112 lines (91 loc) · 2.9 KB
/
Dockerfile.OGC
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
FROM ubuntu:18.04 as builder
MAINTAINER Jozef Knaperek <jozef.knaperek@01cryptohouse.com>
ARG uid=1000
ARG gid=1000
RUN groupadd --gid $gid -r onegram && useradd --uid $uid --create-home --system -g onegram onegram
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
cmake \
make \
ninja-build \
libbz2-dev \
libdb++-dev \
libdb-dev \
libssl-dev \
libcurl4-openssl-dev \
openssl \
libreadline-dev \
autoconf \
libtool \
doxygen \
uuid-dev \
zip \
build-essential \
python-dev \
autotools-dev \
libicu-dev \
automake \
ncurses-dev \
git \
libboost-dev \
libboost-thread-dev \
libboost-date-time-dev \
libboost-system-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-signals-dev \
libboost-serialization-dev \
libboost-chrono-dev \
libboost-test-dev \
libboost-context-dev \
libboost-locale-dev \
libboost-iostreams-dev \
libboost-coroutine-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Note: the build requires access to .git (repo metadata) - fails otherwise!
COPY . /src
# Use BUILD=Release for production builds
ARG BUILD=Debug
# Use TARGET=witness_node to only build witness_node
ARG TARGET=
# Use TARGET_ENV=MAINNET to produce mainnet build (using mainnet genesis file, seed-nodes, and other environment specific options)
# Use TARGET_ENV=TESTNET to produce testnet build (using testnet genesis file, seed-nodes, and other environment specific options)
ARG TARGET_ENV=TESTNET
# Fill these args from version control system in your build script
ARG REVISION_SHA=a1b2c3d4
ARG REVISION_TIMESTAMP=1521619797
RUN cd /src \
&& cmake -G Ninja -DTARGET_ENV=$TARGET_ENV -DCMAKE_BUILD_TYPE=$BUILD -DREVISION_SHA=$REVISION_SHA -DREVISION_TIMESTAMP=$REVISION_TIMESTAMP . \
&& ninja $TARGET \
&& cp programs/delayed_node/delayed_node \
programs/witness_node/witness_node \
programs/cli_wallet/cli_wallet \
programs/genesis_util/get_dev_key \
tests/chain_test \
/usr/local/bin 2>/dev/null || : \
&& find tests -type f -perm /111 -exec cp {} /usr/local/bin/ \;
# Use the following to embed genesis config into the binary:
# cmake -DGRAPHENE_EGENESIS_JSON="/home/onegram/onegram-genesis.json"
COPY onegram/bin/ /usr/local/bin/
WORKDIR /home/onegram
USER onegram
# Make a clean runtime image
FROM ubuntu:18.04
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libcurl4 \
libssl-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY onegram/default-configs/ /var/onegram/data/
ARG uid=1000
ARG gid=1000
RUN groupadd --gid $gid -r onegram && useradd --uid $uid --create-home --system -g onegram onegram \
&& chown -R onegram:onegram /var/onegram/data
USER onegram
EXPOSE 8540 11011
VOLUME /var/onegram/data
CMD /usr/local/bin/onegram_witness