mirror of
https://github.com/monero-project/monero.git
synced 2024-11-16 15:57:36 +00:00
e73e1e7e6f
According to Dockerfile best practices (https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#entrypoint) the best use for ENTRYPOINT is to set the image’s main command and then use CMD as the default flags. This makes it easier to change the flags passed to monerod when running the Docker image.
66 lines
1.6 KiB
Docker
66 lines
1.6 KiB
Docker
# Multistage docker build, requires docker 17.05
|
|
|
|
# builder stage
|
|
FROM ubuntu:20.04 as builder
|
|
|
|
RUN set -ex && \
|
|
apt-get update && \
|
|
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends --yes install \
|
|
automake \
|
|
autotools-dev \
|
|
bsdmainutils \
|
|
build-essential \
|
|
ca-certificates \
|
|
ccache \
|
|
cmake \
|
|
curl \
|
|
git \
|
|
libtool \
|
|
pkg-config \
|
|
gperf
|
|
|
|
WORKDIR /src
|
|
COPY . .
|
|
|
|
ARG NPROC
|
|
RUN set -ex && \
|
|
git submodule init && git submodule update && \
|
|
rm -rf build && \
|
|
if [ -z "$NPROC" ] ; \
|
|
then make -j$(nproc) depends target=x86_64-linux-gnu ; \
|
|
else make -j$NPROC depends target=x86_64-linux-gnu ; \
|
|
fi
|
|
|
|
# runtime stage
|
|
FROM ubuntu:20.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/x86_64-linux-gnu/release/bin /usr/local/bin/
|
|
|
|
# Create monero user
|
|
RUN adduser --system --group --disabled-password monero && \
|
|
mkdir -p /wallet /home/monero/.bitmonero && \
|
|
chown -R monero:monero /home/monero/.bitmonero && \
|
|
chown -R monero:monero /wallet
|
|
|
|
# Contains the blockchain
|
|
VOLUME /home/monero/.bitmonero
|
|
|
|
# Generate your wallet via accessing the container and run:
|
|
# cd /wallet
|
|
# monero-wallet-cli
|
|
VOLUME /wallet
|
|
|
|
EXPOSE 18080
|
|
EXPOSE 18081
|
|
|
|
# switch to user monero
|
|
USER monero
|
|
|
|
ENTRYPOINT ["monerod"]
|
|
CMD ["--p2p-bind-ip=0.0.0.0", "--p2p-bind-port=18080", "--rpc-bind-ip=0.0.0.0", "--rpc-bind-port=18081", "--non-interactive", "--confirm-external-bind"]
|
|
|