From bfc600b4efa6637b39d3679da71e1bf59b995204 Mon Sep 17 00:00:00 2001 From: l-n-s Date: Tue, 4 Jul 2017 18:06:53 -0400 Subject: [PATCH] Added Dockerfile --- contrib/docker/Dockerfile | 28 ++++++++++++++++++++++++++++ contrib/docker/README.md | 30 ++++++++++++++++++++++++++++++ contrib/docker/entrypoint.sh | 23 +++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 contrib/docker/Dockerfile create mode 100644 contrib/docker/README.md create mode 100755 contrib/docker/entrypoint.sh diff --git a/contrib/docker/Dockerfile b/contrib/docker/Dockerfile new file mode 100644 index 0000000..5384046 --- /dev/null +++ b/contrib/docker/Dockerfile @@ -0,0 +1,28 @@ +FROM alpine:latest +LABEL authors "Darknet Villain " + +ENV PYSEEDER_HOME="/home/pyseeder" +ENV DATA_DIR="${PYSEEDER_HOME}/data" + +RUN mkdir -p "$PYSEEDER_HOME" "$DATA_DIR" "$DATA_DIR"/data "$DATA_DIR"/output \ + && adduser -S -h "$PYSEEDER_HOME" pyseeder \ + && chown -R pyseeder:nobody "$PYSEEDER_HOME" \ + && chmod -R 700 "$DATA_DIR" + +RUN apk --no-cache add python3 py3-pip build-base git openssl-dev musl-dev python3-dev libffi-dev \ + && pip3 install --no-cache-dir https://github.com/PurpleI2P/pyseeder/zipball/master \ + && apk --purge del python3 py3-pip build-base git openssl-dev musl-dev python3-dev libffi-dev + +# 2. Adding required libraries to run i2pd to ensure it will run. +RUN apk --no-cache add python3 openssl + +VOLUME "$DATA_DIR" +USER pyseeder + +COPY entrypoint.sh /entrypoint.sh +RUN chmod a+x /entrypoint.sh + +EXPOSE 8443 + +ENTRYPOINT [ "/entrypoint.sh" ] + diff --git a/contrib/docker/README.md b/contrib/docker/README.md new file mode 100644 index 0000000..24d31a0 --- /dev/null +++ b/contrib/docker/README.md @@ -0,0 +1,30 @@ +Pyseeder docker container +========================= + +Using it with i2pd container: + +1) Run i2pd docker container and locate it's datadir volume with `docker inspect ` + + It will show something like that: + + ... + + "Mounts": [ + { + "Name": "69c5fb747b09701acebcf22478f99719e87ac65b3ac11464cd949bebe03a744a", + "Source": "/var/lib/docker/volumes/69c5fb747b09701acebcf22478f99719e87ac65b3ac11464cd949bebe03a744a/_data", + "Destination": "/home/i2pd/data", + "Driver": "local", + "Mode": "", + "RW": true, + "Propagation": "" + } + ], + + ... + +2) Run pyseeder image with that volume mounted at `/i2pd_data`: + + docker run --name=test10 -P -dt -v 69c5fb747b09701acebcf22478f99719e87ac65b3ac11464cd949bebe03a744a:/i2pd_data pyseeder + +3) Enjoy your reseed. diff --git a/contrib/docker/entrypoint.sh b/contrib/docker/entrypoint.sh new file mode 100755 index 0000000..b2ff01b --- /dev/null +++ b/contrib/docker/entrypoint.sh @@ -0,0 +1,23 @@ +#!/bin/sh +COMMAND="pyseeder" + +if [ "$1" = "--help" ]; then + $COMMAND --help +else + # TODO + # make configurable SIGNER_ID and cert, key etc + + DATA_DIR="/home/pyseeder/data" + SIGNER_ID="test@mail.i2p" + PRIVKEY_FILE="$DATA_DIR/data/private_key.pem" + CERT_FILE=` echo $DATA_DIR/data/$SIGNER_ID.crt | sed 's/@/_at_/' ` + RESEED_FILE="$DATA_DIR/output/i2pseeds.su3" + I2PD_DIR="/i2pd_data" + + $COMMAND keygen --signer-id $SIGNER_ID --no-encrypt \ + --private-key $PRIVKEY_FILE --cert $CERT_FILE + $COMMAND reseed --netdb $I2PD_DIR/netDb --signer-id $SIGNER_ID --no-encrypt \ + --private-key $PRIVKEY_FILE --outfile $RESEED_FILE + $COMMAND serve --private-key $PRIVKEY_FILE --cert $CERT_FILE --file $RESEED_FILE +fi +