dash/contrib/containers/deploy/Dockerfile.GitHubActions.Dispatch
Kittywhiskers Van Gogh 6699b0228f
docker: fix gitian support, optimize container layer count and improve script consistency (#4983)
* 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
2022-08-22 22:42:36 +03:00

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