diff --git a/README.md b/README.md index e19e467..1bcc786 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,9 @@ services: - "./yggdrasil:/etc/yggdrasil" sysctls: - "net.ipv6.conf.all.disable_ipv6=0" + environment: + - BIND_PORT=80 + - BIND_ADDRESS=nginx ``` ## docker cli @@ -36,3 +39,12 @@ docker run \ yggdrasil ``` +# Parameters + +Container images are configured using parameters passed at runtime. + +|Parameter|Function| +|:--------|:-------| +|-e BIND_PORT|Port to forward.| +|-e BIND_ADDRESS|Address of another docker service to forward to.| + diff --git a/docker-compose.yml b/docker-compose.yml index 9d7f42e..a71b31a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,9 @@ services: context: https://git.bitdeals.org/private/yggdrasil.git dockerfile: ./docker/Dockerfile image: registry.bitdeals.org/yggdrasil + environment: + - BIND_PORT= + - BIND_ADDRESS= restart: unless-stopped cap_add: - NET_ADMIN diff --git a/docker/Dockerfile b/docker/Dockerfile index df39796..7537fb0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -3,7 +3,7 @@ FROM debian:testing-slim SHELL [ "/bin/sh", "-eux", "-c" ] RUN apt-get update \ - && apt-get install -y --no-install-recommends yggdrasil wget ca-certificates unzip libcap2-bin gosu ;\ + && apt-get install -y --no-install-recommends yggdrasil wget ca-certificates unzip libcap2-bin gosu socat;\ apt-get clean ;\ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/docker/run.sh b/docker/run.sh index a9f26ff..9ed70f3 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -1,5 +1,8 @@ #!/bin/sh +BIND_PORT=${BIND_PORT:-80} +BIND_ADDRESS=${BIND_ADDRESS:-127.0.0.1} + if ! [ -d /var/run/yggdrasil ] then install -d -o yggdrasil -g yggdrasil /run/yggdrasil /var/run/yggdrasil @@ -13,14 +16,22 @@ then fi +# Port forwarding to another docker service +while sleep 1; +do + socat TCP6-LISTEN:$BIND_PORT,fork,forever,reuseaddr TCP4:$BIND_ADDRESS:$BIND_PORT +done & + + # Show node address until yggdrasilctl getself | grep -v "^[[:digit:]]" do sleep 5 done & - +# Update available public peers peers_updater --config /etc/yggdrasil/yggdrasil.conf --update_cfg --number 5 + gosu yggdrasil /usr/sbin/yggdrasil -useconffile /etc/yggdrasil/yggdrasil.conf