|
1 | | -FROM alpine:3.7 |
| 1 | +# Build Ethermint |
| 2 | +FROM golang:1.9-alpine as builder |
2 | 3 |
|
3 | | -ENV DATA_ROOT /ethermint |
4 | | -# ENV TENDERMINT_ADDR tcp://0.0.0.0:46657 |
5 | | - |
6 | | -RUN addgroup emuser && \ |
7 | | - adduser -S -G emuser emuser |
8 | | - |
9 | | -RUN mkdir -p $DATA_ROOT && \ |
10 | | - chown -R emuser:emuser $DATA_ROOT |
11 | | - |
12 | | -RUN apk add --no-cache bash |
| 4 | +ENV EM_VERSION v0.5.4 |
13 | 5 |
|
14 | | -# Setting Golang paths |
15 | 6 | ENV GOPATH /go |
16 | 7 | ENV PATH "$PATH:/go/bin" |
17 | | -# ENV ETHERMINT_VERSION develop |
18 | | -# ENV ETHERMINT_VERSION master |
19 | | -ENV ETHERMINT_VERSION v0.5.4 |
20 | 8 |
|
21 | | -# Installing Ethermint from source |
| 9 | +# Install dependencies |
| 10 | +RUN apk update && \ |
| 11 | + apk add --no-cache make gcc musl-dev linux-headers go build-base git |
| 12 | + |
| 13 | +# Install Golang's dependency manager |
| 14 | +RUN go-wrapper download -u github.com/Masterminds/glide && \ |
| 15 | + go-wrapper install github.com/Masterminds/glide && \ |
| 16 | + rm -rf /usr/lib/go /go/src /go/pkg /var/cache/* |
| 17 | + |
| 18 | +# Get the source code |
22 | 19 | RUN mkdir -p /go/src/github.com/tendermint/ethermint && \ |
23 | | - apk add --no-cache go build-base git linux-headers && \ |
24 | 20 | cd /go/src/github.com/tendermint/ethermint && \ |
25 | 21 | git clone https://github.com/tendermint/ethermint . && \ |
26 | | - git checkout ${ETHERMINT_VERSION} && \ |
27 | | - make get_vendor_deps && \ |
28 | | - make install && \ |
29 | | - glide cc && \ |
30 | | - cd - && \ |
| 22 | + git checkout ${EM_VERSION} |
| 23 | + |
| 24 | +# Build ethermint and all tools |
| 25 | +RUN cd /go/src/github.com/tendermint/ethermint && \ |
| 26 | + make get_vendor_deps && make install && glide cc && cd - && \ |
31 | 27 | rm -rf /go/src/github.com/tendermint/ethermint && \ |
32 | 28 | apk del go build-base git |
33 | 29 |
|
| 30 | + |
| 31 | +# Pull all binaries into a second stage deploy alpine container |
| 32 | +FROM alpine:latest |
| 33 | + |
| 34 | +# The /ethermint/data dir is used by ethermint to store state. |
| 35 | +ENV DATA_ROOT /ethermint |
| 36 | +#ENV TENDERMINT_ADDR tcp://0.0.0.0:46657 |
| 37 | + |
| 38 | +# Create directory for persistence and give our user ownership |
| 39 | +RUN mkdir -p $DATA_ROOT |
| 40 | + |
| 41 | +RUN apk add --no-cache ca-certificates bash |
| 42 | +COPY --from=builder /go/bin/* /usr/local/bin/ |
| 43 | + |
| 44 | +# Expose the data directory as a volume since there's mutable state in there |
34 | 45 | VOLUME $DATA_ROOT |
35 | 46 |
|
36 | 47 | EXPOSE 46658 |
|
0 commit comments