|
|
@ -1,5 +1,18 @@ |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# Copyright (c) 2017-2022, The PurpleI2P Project |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# This file is part of Purple i2pd project and licensed under BSD3 |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# See full license text in LICENSE file at top of project tree |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
|
|
FROM alpine:latest |
|
|
|
FROM alpine:latest |
|
|
|
LABEL authors "Mikal Villa <mikal@sigterm.no>, Darknet Villain <supervillain@riseup.net>" |
|
|
|
LABEL authors="Mikal Villa <mikal@sigterm.no>, Darknet Villain <supervillain@riseup.net>" |
|
|
|
|
|
|
|
LABEL maintainer="R4SAS <r4sas@i2pmail.org>" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LABEL org.opencontainers.image.source=https://github.com/PurpleI2P/i2pd |
|
|
|
|
|
|
|
LABEL org.opencontainers.image.documentation=https://i2pd.readthedocs.io/en/latest/ |
|
|
|
|
|
|
|
LABEL org.opencontainers.image.licenses=BSD3 |
|
|
|
|
|
|
|
|
|
|
|
# Expose git branch, tag and URL variables as arguments |
|
|
|
# Expose git branch, tag and URL variables as arguments |
|
|
|
ARG GIT_BRANCH="openssl" |
|
|
|
ARG GIT_BRANCH="openssl" |
|
|
@ -11,27 +24,28 @@ ENV REPO_URL=${REPO_URL} |
|
|
|
|
|
|
|
|
|
|
|
ENV I2PD_HOME="/home/i2pd" |
|
|
|
ENV I2PD_HOME="/home/i2pd" |
|
|
|
ENV DATA_DIR="${I2PD_HOME}/data" |
|
|
|
ENV DATA_DIR="${I2PD_HOME}/data" |
|
|
|
ENV DEFAULT_ARGS=" --datadir=$DATA_DIR --reseed.verify=true --upnp.enabled=false --http.enabled=true --http.address=0.0.0.0 --httpproxy.enabled=true --httpproxy.address=0.0.0.0 --socksproxy.enabled=true --socksproxy.address=0.0.0.0 --sam.enabled=true --sam.address=0.0.0.0" |
|
|
|
ENV DEFAULT_ARGS=" --datadir=$DATA_DIR" |
|
|
|
|
|
|
|
|
|
|
|
RUN mkdir -p "$I2PD_HOME" "$DATA_DIR" \ |
|
|
|
RUN mkdir -p "$I2PD_HOME" "$DATA_DIR" \ |
|
|
|
&& adduser -S -h "$I2PD_HOME" i2pd \ |
|
|
|
&& adduser -S -h "$I2PD_HOME" i2pd \ |
|
|
|
&& chown -R i2pd:nobody "$I2PD_HOME" |
|
|
|
&& chown -R i2pd:nobody "$I2PD_HOME" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 1. Building binary |
|
|
|
|
|
|
|
# Each RUN is a layer, adding the dependencies and building i2pd 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. |
|
|
|
# |
|
|
|
# |
|
|
|
# Each RUN is a layer, adding the dependencies and building i2pd in one layer takes around 8-900Mb, so to keep the |
|
|
|
# 1. install deps, clone and build. |
|
|
|
# image under 20mb we need to remove all the build dependencies in the same "RUN" / layer. |
|
|
|
# 2. strip binaries. |
|
|
|
# |
|
|
|
# 3. Purge all dependencies and other unrelated packages, including build directory. |
|
|
|
|
|
|
|
|
|
|
|
# 1. install deps, clone and build. |
|
|
|
|
|
|
|
# 2. strip binaries. |
|
|
|
|
|
|
|
# 3. Purge all dependencies and other unrelated packages, including build directory. |
|
|
|
|
|
|
|
RUN apk update \ |
|
|
|
RUN apk update \ |
|
|
|
&& apk --no-cache --virtual build-dependendencies add make gcc g++ libtool zlib-dev boost-dev build-base openssl-dev openssl miniupnpc-dev git \ |
|
|
|
&& apk --no-cache --virtual build-dependendencies add make gcc g++ libtool zlib-dev boost-dev build-base openssl-dev openssl miniupnpc-dev git \ |
|
|
|
&& mkdir -p /tmp/build \ |
|
|
|
&& mkdir -p /tmp/build \ |
|
|
|
&& cd /tmp/build && git clone -b ${GIT_BRANCH} ${REPO_URL} \ |
|
|
|
&& cd /tmp/build && git clone -b ${GIT_BRANCH} ${REPO_URL} \ |
|
|
|
&& cd i2pd \ |
|
|
|
&& cd i2pd \ |
|
|
|
&& if [ -n "${GIT_TAG}" ]; then git checkout tags/${GIT_TAG}; fi \ |
|
|
|
&& if [ -n "${GIT_TAG}" ]; then git checkout tags/${GIT_TAG}; fi \ |
|
|
|
&& make USE_UPNP=yes \ |
|
|
|
&& make -j$(nproc) USE_UPNP=yes \ |
|
|
|
&& cp -R contrib/certificates /i2pd_certificates \ |
|
|
|
&& cp -R contrib/certificates /i2pd_certificates \ |
|
|
|
&& mkdir -p /usr/local/bin \ |
|
|
|
&& mkdir -p /usr/local/bin \ |
|
|
|
&& mv i2pd /usr/local/bin \ |
|
|
|
&& mv i2pd /usr/local/bin \ |
|
|
@ -45,6 +59,9 @@ RUN apk update \ |
|
|
|
# 2. Adding required libraries to run i2pd to ensure it will run. |
|
|
|
# 2. Adding required libraries to run i2pd 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 miniupnpc musl-utils libstdc++ |
|
|
|
RUN apk --no-cache add boost-filesystem boost-system boost-program_options boost-date_time boost-thread boost-iostreams openssl miniupnpc musl-utils libstdc++ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 3. Copy preconfigured config file and entrypoint |
|
|
|
|
|
|
|
COPY i2pd-docker.conf "$I2PD_HOME/i2pd.conf" |
|
|
|
|
|
|
|
RUN chown i2pd:nobody "$I2PD_HOME/i2pd.conf" |
|
|
|
COPY entrypoint.sh /entrypoint.sh |
|
|
|
COPY entrypoint.sh /entrypoint.sh |
|
|
|
RUN chmod a+x /entrypoint.sh |
|
|
|
RUN chmod a+x /entrypoint.sh |
|
|
|
|
|
|
|
|
|
|
|