mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-27 11:17:49 +02:00
54 lines
2.2 KiB
Docker
54 lines
2.2 KiB
Docker
FROM alpine:latest
|
|
LABEL authors "Mikal Villa <mikal@sigterm.no>, Darknet Villain <supervillain@riseup.net>"
|
|
|
|
# Expose git branch, tag and URL variables as arguments
|
|
ARG GIT_BRANCH="openssl"
|
|
ENV GIT_BRANCH=${GIT_BRANCH}
|
|
ARG GIT_TAG=""
|
|
ENV GIT_TAG=${GIT_TAG}
|
|
ARG REPO_URL="https://github.com/PurpleI2P/dotnet.git"
|
|
ENV REPO_URL=${REPO_URL}
|
|
|
|
ENV DOTNET_HOME="/home/dotnet"
|
|
ENV DATA_DIR="${DOTNET_HOME}/data"
|
|
|
|
RUN mkdir -p "$DOTNET_HOME" "$DATA_DIR" \
|
|
&& adduser -S -h "$DOTNET_HOME" dotnet \
|
|
&& chown -R dotnet:nobody "$DOTNET_HOME"
|
|
|
|
#
|
|
# Each RUN is a layer, adding the dependencies and building dotnet in one layer takes around 8-900Mb, so to keep the
|
|
# image under 20mb we need to remove all the build dependencies in the same "RUN" / layer.
|
|
#
|
|
|
|
# 1. install deps, clone and build.
|
|
# 2. strip binaries.
|
|
# 3. Purge all dependencies and other unrelated packages, including build directory.
|
|
RUN apk --no-cache --virtual build-dependendencies add make gcc g++ libtool zlib-dev boost-dev build-base openssl-dev openssl git \
|
|
&& mkdir -p /tmp/build \
|
|
&& cd /tmp/build && git clone -b ${GIT_BRANCH} ${REPO_URL} \
|
|
&& cd dotnet \
|
|
&& if [ -n "${GIT_TAG}" ]; then git checkout tags/${GIT_TAG}; fi \
|
|
&& make \
|
|
&& cp -R contrib/certificates /dotnet_certificates \
|
|
&& mkdir -p /usr/local/bin \
|
|
&& mv dotnet /usr/local/bin \
|
|
&& cd /usr/local/bin \
|
|
&& strip dotnet \
|
|
&& rm -fr /tmp/build && apk --no-cache --purge del build-dependendencies build-base fortify-headers boost-dev zlib-dev openssl-dev \
|
|
boost-python3 python3 gdbm boost-unit_test_framework boost-python linux-headers boost-prg_exec_monitor \
|
|
boost-serialization boost-signals boost-wave boost-wserialization boost-math boost-graph boost-regex git pcre \
|
|
libtool g++ gcc pkgconfig
|
|
|
|
# 2. Adding required libraries to run dotnet to ensure it will run.
|
|
RUN apk --no-cache add boost-filesystem boost-system boost-program_options boost-date_time boost-thread boost-iostreams openssl musl-utils libstdc++
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod a+x /entrypoint.sh
|
|
|
|
RUN echo "export DATA_DIR=${DATA_DIR}" >> /etc/profile
|
|
VOLUME "$DATA_DIR"
|
|
EXPOSE 7070 4444 4447 7656 2827 7654 7650
|
|
USER dotnet
|
|
|
|
ENTRYPOINT [ "/entrypoint.sh" ]
|