1
1
mirror of https://github.com/dnscrypt/dnscrypt-server-docker synced 2024-11-22 19:42:03 +01:00

Switch to Ubuntu - Rust doesn't work well with musl-libc

This commit is contained in:
Frank Denis 2019-09-22 17:16:03 +02:00
parent a3efabd367
commit cbf9f7c4cc
2 changed files with 38 additions and 32 deletions

@ -1,13 +1,14 @@
FROM jedisct1/alpine-runit:latest FROM ubuntu:19.04
LABEL maintainer="Frank Denis" LABEL maintainer="Frank Denis"
SHELL ["/bin/sh", "-x", "-c"] SHELL ["/bin/sh", "-x", "-c"]
ENV SERIAL 3 ENV SERIAL 3
ENV CFLAGS=-Ofast 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 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 ldns ldns-tools libevent expat libexecinfo coreutils drill ca-certificates 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 RUN update-ca-certificates 2> /dev/null || true
ENV UNBOUND_GIT_URL https://github.com/jedisct1/unbound.git ENV UNBOUND_GIT_URL https://github.com/jedisct1/unbound.git
@ -15,7 +16,7 @@ ENV UNBOUND_GIT_REVISION 35ac577d99d56869f2f87dcc7b5e36b8996df5ca
WORKDIR /tmp 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" && \ git clone --depth=1000 "$UNBOUND_GIT_URL" && \
cd unbound && \ cd unbound && \
git checkout "$UNBOUND_GIT_REVISION" && \ git checkout "$UNBOUND_GIT_REVISION" && \
@ -25,16 +26,16 @@ RUN apk add --no-cache $BUILD_DEPS && \
--with-username=_unbound --with-libevent --enable-event-api && \ --with-username=_unbound --with-libevent --enable-event-api && \
make -j"$(getconf _NPROCESSORS_ONLN)" install && \ make -j"$(getconf _NPROCESSORS_ONLN)" install && \
mv /opt/unbound/etc/unbound/unbound.conf /opt/unbound/etc/unbound/unbound.conf.example && \ 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 /opt/unbound/share/man && \
rm -fr /tmp/* /var/tmp/* 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 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 && \ cargo install encrypted-dns && \
mkdir -p /opt/encrypted-dns/sbin && \ mkdir -p /opt/encrypted-dns/sbin && \
mkdir -p /opt/encrypted-dns/etc/keys && \ 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 && \ useradd -g _encrypted-dns -s /etc -d /opt/encrypted-dns/empty _encrypted-dns && \
chown _encrypted-dns:_encrypted-dns /opt/encrypted-dns/etc/keys && \ chown _encrypted-dns:_encrypted-dns /opt/encrypted-dns/etc/keys && \
chmod 700 /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 ~/.cargo ~/.rustup && \
rm -fr /tmp/* /var/tmp/* rm -fr /tmp/* /var/tmp/*

@ -8,7 +8,7 @@ LEGACY_KEYS_DIR="/opt/dnscrypt-wrapper/etc/keys"
KEYS_DIR="/opt/encrypted-dns/etc/keys" KEYS_DIR="/opt/encrypted-dns/etc/keys"
CONF_DIR="/opt/encrypted-dns/etc" CONF_DIR="/opt/encrypted-dns/etc"
CONFIG_FILE="${CONF_DIR}/encrypted-dns.toml" CONFIG_FILE="${CONF_DIR}/encrypted-dns.toml"
CONFIG_FILE_TEMPLATE="${CONF_DIR}/encrypted-dns.toml.in"
# -N provider-name -E external-ip-address:port # -N provider-name -E external-ip-address:port
@ -19,33 +19,38 @@ init() {
fi fi
while getopts "h?N:E:" opt; do while getopts "h?N:E:" opt; do
case "$opt" in case "$opt" in
h | \?) usage ;; h | \?) usage ;;
N) provider_name=$(echo "$OPTARG" | sed -e 's/^[ \t]*//' | tr A-Z a-z) ;; 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) ;; E) ext_address=$(echo "$OPTARG" | sed -e 's/^[ \t]*//' | tr A-Z a-z) ;;
esac esac
done done
[ -z "$provider_name" ] && usage [ -z "$provider_name" ] && usage
case "$provider_name" in case "$provider_name" in
.*) usage ;; .*) usage ;;
2.dnscrypt-cert.*) ;; 2.dnscrypt-cert.*) ;;
*) provider_name="2.dnscrypt-cert.${provider_name}" ;; *) provider_name="2.dnscrypt-cert.${provider_name}" ;;
esac esac
[ -z "$ext_address" ] && usage [ -z "$ext_address" ] && usage
case "$ext_address" in case "$ext_address" in
.*) usage ;; .*) usage ;;
0.*) 0.*)
echo "Do not use 0.0.0.0, use an actual external IP address" >&2 echo "Do not use 0.0.0.0, use an actual external IP address" >&2
exit 1 exit 1
;; ;;
esac esac
echo "Provider name: [$provider_name]" 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" 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 | --config "$CONFIG_FILE" --dry-run |
tee "${KEYS_DIR}/provider-info.txt" tee "${KEYS_DIR}/provider-info.txt"
@ -87,7 +92,7 @@ start() {
} }
usage() { usage() {
cat << EOT cat <<EOT
Commands Commands
======== ========
@ -107,11 +112,11 @@ EOT
} }
case "$action" in case "$action" in
start) start ;; start) start ;;
init) init)
shift shift
init $* init $*
;; ;;
provider-info) provider_info ;; provider-info) provider_info ;;
*) usage ;; *) usage ;;
esac esac