From 8fa70c9cdef94f54e70f33410f61d17361c3aa86 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky <zlatinb@gmail.com> Date: Wed, 28 Apr 2021 04:12:24 +0000 Subject: [PATCH] More Docker changes: * disable in-network updates * persistent directory for snark downloads * listen on port 12345 for i2np connections * restore multi-stage build * use better ant target * allow passing -Xmx via the JVM_XMX variable Many thanks to LoveIsGrief for the suggestions! --- Dockerfile | 27 +++++++++++++++------------ docker/rootfs/i2p/i2psnark.config | 12 ++++++++++++ docker/rootfs/i2p/router.config | 4 ++++ docker/rootfs/startapp.sh | 9 ++++++++- 4 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 docker/rootfs/i2p/i2psnark.config create mode 100644 docker/rootfs/i2p/router.config diff --git a/Dockerfile b/Dockerfile index 4d78585c09..d88d70c675 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,29 @@ -FROM jlesage/baseimage:alpine-3.10-glibc +FROM jlesage/baseimage:alpine-3.10-glibc as builder + ENV APP_HOME="/i2p" WORKDIR /tmp/build COPY . . -# Build package -RUN add-pkg openjdk8-jre -RUN add-pkg --virtual build-base gettext tar bzip2 apache-ant openjdk8 -RUN echo "noExe=true" >> build.properties -RUN ant clean pkg -RUN del-pkg build-base gettext tar bzip2 apache-ant openjdk8 +RUN add-pkg --virtual build-base gettext tar bzip2 apache-ant openjdk8 \ + && ant preppkg-linux-only \ + && del-pkg build-base gettext tar bzip2 apache-ant openjdk8 + +FROM jlesage/baseimage:alpine-3.10-glibc +ENV APP_HOME="/i2p" -# "install" files -RUN mkdir -p ${APP_HOME} -RUN mv pkg-temp/* ${APP_HOME} +RUN add-pkg openjdk8-jre +WORKDIR ${APP_HOME} +COPY --from=builder /tmp/build/pkg-temp . # "install" i2p by copying over installed files COPY docker/rootfs/ / -# Mount home +# Mount home and snark VOLUME ["${APP_HOME}/.i2p"] +VOLUME ["/i2psnark"] -EXPOSE 7654 7656 7657 7658 4444 6668 8998 7659 7660 4445 +EXPOSE 7654 7656 7657 7658 4444 6668 8998 7659 7660 4445 12345 # Metadata. LABEL \ @@ -30,3 +32,4 @@ LABEL \ org.label-schema.version="1.0" \ org.label-schema.vcs-url="https://github.com/i2p/i2p.i2p" \ org.label-schema.schema-version="1.0" + diff --git a/docker/rootfs/i2p/i2psnark.config b/docker/rootfs/i2p/i2psnark.config new file mode 100644 index 0000000000..168cca07b7 --- /dev/null +++ b/docker/rootfs/i2p/i2psnark.config @@ -0,0 +1,12 @@ +# NOTE: This I2P config file must use UTF-8 encoding +# +# If you have a 'split' directory installation, with configuration +# files in ~/.i2p (Linux), %LOCALAPPDATA%\I2P (Windows), +# or /Users/(user)/Library/Application Support/i2p (Mac), be sure to +# edit the file in the configuration directory, NOT the install directory. +# When running as a Linux daemon, the configuration directory is /var/lib/i2p +# and the install directory is /usr/share/i2p . +# When running as a Windows service, the configuration directory is \ProgramData\i2p +# and the install directory is \Program Files\i2p . +# +i2psnark.dir=/i2psnark diff --git a/docker/rootfs/i2p/router.config b/docker/rootfs/i2p/router.config new file mode 100644 index 0000000000..74192b8587 --- /dev/null +++ b/docker/rootfs/i2p/router.config @@ -0,0 +1,4 @@ +router.updateDisabled=true +i2np.ntcp.port=12345 +i2np.udp.port=12345 +i2np.udp.internalPort=12345 diff --git a/docker/rootfs/startapp.sh b/docker/rootfs/startapp.sh index 0f26d35b16..ba2d8f5bd5 100644 --- a/docker/rootfs/startapp.sh +++ b/docker/rootfs/startapp.sh @@ -1,6 +1,13 @@ #!/bin/sh set -e +if [ -z $JVM_XMX ]; then + echo "*** Defaulting to 512MB JVM heap limit" + echo "*** You can override that value with the JVM_XMX variable" + echo "*** (for example JVM_XMX=256m)" + JVM_XMX=512m +fi + # Explicitly define HOME otherwise it might not have been set export HOME=/i2p @@ -15,7 +22,7 @@ for jar in `ls lib/*.jar`; do CLASSPATH=${CLASSPATH}:${jar} done -JAVAOPTS="-Djava.net.preferIPv4Stack=false -Djava.library.path=${I2P}:${I2P}/lib -Di2p.dir.base=${I2P} -Di2p.dir.config=${HOME}/.i2p -DloggerFilenameOverride=logs/log-router-@.txt" +JAVAOPTS="-Djava.net.preferIPv4Stack=false -Djava.library.path=${I2P}:${I2P}/lib -Di2p.dir.base=${I2P} -Di2p.dir.config=${HOME}/.i2p -DloggerFilenameOverride=logs/log-router-@.txt -Xmx$JVM_XMX" java -cp "${CLASSPATH}" ${JAVA_OPTS} net.i2p.router.RouterLaunch -- GitLab