From cbf9f7c4ccd7d7aa9c7c5ae16929bf5be2c9450a Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sun, 22 Sep 2019 17:16:03 +0200 Subject: [PATCH] Switch to Ubuntu - Rust doesn't work well with musl-libc --- Dockerfile | 21 +++++++++++---------- entrypoint.sh | 49 +++++++++++++++++++++++++++---------------------- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/Dockerfile b/Dockerfile index 69d72f0..206a9aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,14 @@ -FROM jedisct1/alpine-runit:latest +FROM ubuntu:19.04 LABEL maintainer="Frank Denis" SHELL ["/bin/sh", "-x", "-c"] ENV SERIAL 3 ENV CFLAGS=-Ofast -ENV BUILD_DEPS curl make gcc musl-dev git libevent-dev expat-dev shadow autoconf file openssl-dev byacc linux-headers -ENV RUNTIME_DEPS bash util-linux coreutils findutils grep openssl ldns ldns-tools libevent expat libexecinfo coreutils drill ca-certificates +ENV BUILD_DEPS curl make build-essential git libevent-dev libexpat1-dev autoconf file libssl-dev byacc +ENV RUNTIME_DEPS bash util-linux coreutils findutils grep openssl ldnsutils libevent-dev expat coreutils ca-certificates runit runit-systemd -RUN apk --no-cache upgrade && apk add --no-cache $RUNTIME_DEPS +RUN apt-get update; apt-get -qy dist-upgrade; apt-get -qy clean +RUN apt-get install -qy --no-install-recommends $RUNTIME_DEPS RUN update-ca-certificates 2> /dev/null || true ENV UNBOUND_GIT_URL https://github.com/jedisct1/unbound.git @@ -15,7 +16,7 @@ ENV UNBOUND_GIT_REVISION 35ac577d99d56869f2f87dcc7b5e36b8996df5ca WORKDIR /tmp -RUN apk add --no-cache $BUILD_DEPS && \ +RUN apt-get install -qy --no-install-recommends $BUILD_DEPS && \ git clone --depth=1000 "$UNBOUND_GIT_URL" && \ cd unbound && \ git checkout "$UNBOUND_GIT_REVISION" && \ @@ -25,16 +26,16 @@ RUN apk add --no-cache $BUILD_DEPS && \ --with-username=_unbound --with-libevent --enable-event-api && \ make -j"$(getconf _NPROCESSORS_ONLN)" install && \ mv /opt/unbound/etc/unbound/unbound.conf /opt/unbound/etc/unbound/unbound.conf.example && \ - apk del --purge $BUILD_DEPS && \ + apt-get -qy purge $BUILD_DEPS && \ rm -fr /opt/unbound/share/man && \ rm -fr /tmp/* /var/tmp/* -ENV RUSTFLAGS "-C target-feature=-crt-static -C link-arg=-s" +ENV RUSTFLAGS "-C link-arg=-s" -RUN apk add --no-cache $BUILD_DEPS && \ +RUN apt-get install -qy --no-install-recommends $BUILD_DEPS && \ curl -sSf https://sh.rustup.rs | bash -s -- -y --default-toolchain nightly -RUN source $HOME/.cargo/env && \ +RUN export PATH="$HOME/.cargo/bin:$PATH" && \ cargo install encrypted-dns && \ mkdir -p /opt/encrypted-dns/sbin && \ mkdir -p /opt/encrypted-dns/etc/keys && \ @@ -44,7 +45,7 @@ RUN source $HOME/.cargo/env && \ useradd -g _encrypted-dns -s /etc -d /opt/encrypted-dns/empty _encrypted-dns && \ chown _encrypted-dns:_encrypted-dns /opt/encrypted-dns/etc/keys && \ chmod 700 /opt/encrypted-dns/etc/keys && \ - apk del --purge $BUILD_DEPS && \ + apt-get -qy purge $BUILD_DEPS && \ rm -fr ~/.cargo ~/.rustup && \ rm -fr /tmp/* /var/tmp/* diff --git a/entrypoint.sh b/entrypoint.sh index 24e02d3..f5171da 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -8,7 +8,7 @@ LEGACY_KEYS_DIR="/opt/dnscrypt-wrapper/etc/keys" KEYS_DIR="/opt/encrypted-dns/etc/keys" CONF_DIR="/opt/encrypted-dns/etc" CONFIG_FILE="${CONF_DIR}/encrypted-dns.toml" - +CONFIG_FILE_TEMPLATE="${CONF_DIR}/encrypted-dns.toml.in" # -N provider-name -E external-ip-address:port @@ -19,33 +19,38 @@ init() { fi while getopts "h?N:E:" opt; do case "$opt" in - h | \?) usage ;; - N) provider_name=$(echo "$OPTARG" | sed -e 's/^[ \t]*//' | tr A-Z a-z) ;; - E) ext_address=$(echo "$OPTARG" | sed -e 's/^[ \t]*//' | tr A-Z a-z) ;; + h | \?) usage ;; + N) provider_name=$(echo "$OPTARG" | sed -e 's/^[ \t]*//' | tr A-Z a-z) ;; + E) ext_address=$(echo "$OPTARG" | sed -e 's/^[ \t]*//' | tr A-Z a-z) ;; esac done [ -z "$provider_name" ] && usage case "$provider_name" in - .*) usage ;; - 2.dnscrypt-cert.*) ;; - *) provider_name="2.dnscrypt-cert.${provider_name}" ;; + .*) usage ;; + 2.dnscrypt-cert.*) ;; + *) provider_name="2.dnscrypt-cert.${provider_name}" ;; esac [ -z "$ext_address" ] && usage case "$ext_address" in - .*) usage ;; - 0.*) - echo "Do not use 0.0.0.0, use an actual external IP address" >&2 - exit 1 - ;; + .*) usage ;; + 0.*) + echo "Do not use 0.0.0.0, use an actual external IP address" >&2 + exit 1 + ;; esac echo "Provider name: [$provider_name]" - echo "$provider_name" > "${KEYS_DIR}/provider_name" + echo "$provider_name" >"${KEYS_DIR}/provider_name" chmod 644 "${KEYS_DIR}/provider_name" - /opt/encrypted-dns/sbin/dnscrypted-dns \ + sed \ + -e "s/@PROVIDER_NAME@/${provider_name}/" \ + -e "s/@EXTERNAL_IPV4@/${ext_address}/" \ + "$CONFIG_FILE_TEMPLATE" >"$CONFIG_FILE" + + /opt/encrypted-dns/sbin/encrypted-dns \ --config "$CONFIG_FILE" --dry-run | tee "${KEYS_DIR}/provider-info.txt" @@ -87,7 +92,7 @@ start() { } usage() { - cat << EOT + cat <