mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 20:12:57 +01:00
6699b0228f
* contrib: set the working directory to /src/dash to allow for cloning gitian dependencies * contrib: place the home directory inside /home instead of root * contrib: add notes about sharing ccache across the network * contrib: chown based on the (u/g)id env vars instead of the associated username * contrib: reduce layer count by reducing run invocations * contrib: develop container cleanup and maintenance - add apt-cacher-ng, gpg, lsb-release, screen as a package dependencies - reorder packages in alphabetical order - correct documentation - create and add user to the docker group to satisfy Gitian's needs - reduce the number of RUN calls to reduce layer count
81 lines
2.0 KiB
Docker
81 lines
2.0 KiB
Docker
# syntax=docker/dockerfile:1.3
|
|
|
|
FROM --platform=$BUILDPLATFORM ubuntu:focal as builder
|
|
RUN apt-get update && \
|
|
apt-get -y install --no-install-recommends \
|
|
automake \
|
|
autotools-dev \
|
|
bsdmainutils \
|
|
build-essential \
|
|
ca-certificates \
|
|
curl \
|
|
g++-arm-linux-gnueabihf \
|
|
libtool \
|
|
pkg-config \
|
|
python3 \
|
|
wget \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /home/dash
|
|
|
|
COPY . .
|
|
|
|
ARG TARGETPLATFORM
|
|
|
|
RUN case "$TARGETPLATFORM" in \
|
|
"linux/arm64") make HOST=arm-linux-gnueabihf -C depends -j`nproc | awk '{x=$1/2; print x}'` ;; \
|
|
"linux/amd64") make HOST=x86_64-pc-linux-gnu -C depends -j`nproc | awk '{x=$1/2; print x}'` ;; \
|
|
*) exit 1 ;; \
|
|
esac
|
|
|
|
RUN ./autogen.sh && \
|
|
case "$TARGETPLATFORM" in \
|
|
"linux/arm64") ./configure --prefix=`pwd`/depends/arm-linux-gnueabihf ;; \
|
|
"linux/amd64") ./configure --prefix=`pwd`/depends/x86_64-pc-linux-gnu ;; \
|
|
esac
|
|
|
|
RUN make -j`nproc | awk '{x=$1/2; print x}'` && make install
|
|
|
|
RUN mkdir built-target && \
|
|
case "$TARGETPLATFORM" in \
|
|
"linux/arm64") cp depends/arm-linux-gnueabihf/bin/dash* /home/dash/built-target ;; \
|
|
"linux/amd64") cp depends/x86_64-pc-linux-gnu/bin/dash* /home/dash/built-target ;; \
|
|
esac
|
|
|
|
FROM ubuntu:focal
|
|
LABEL maintainer="Dash Developers <dev@dash.org>"
|
|
LABEL description="Dockerised DashCore"
|
|
|
|
ARG USER_ID
|
|
ARG GROUP_ID
|
|
ARG TAG
|
|
|
|
ENV HOME /home/dash
|
|
|
|
# add user with specified (or default) user/group ids
|
|
ENV USER_ID ${USER_ID:-1000}
|
|
ENV GROUP_ID ${GROUP_ID:-1000}
|
|
RUN groupadd -g ${GROUP_ID} dash && \
|
|
useradd -u ${USER_ID} -g dash -s /bin/bash -m -d /home/dash dash && \
|
|
mkdir /home/dash/.dashcore && \
|
|
chown ${USER_ID}:${GROUP_ID} -R /home/dash
|
|
|
|
RUN apt-get update && \
|
|
apt-get -y install --no-install-recommends \
|
|
wget \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=builder /home/dash/built-target/dash* /usr/local/bin
|
|
|
|
USER dash
|
|
|
|
VOLUME ["/home/dash"]
|
|
|
|
COPY docker/docker-entrypoint.sh /docker-entrypoint.sh
|
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
|
|
|
EXPOSE 9998 9999 19998 19999
|
|
|
|
WORKDIR /home/dash
|