From f3de1456630c16dec5956cae8546a44b81d4b81f Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 27 Aug 2020 01:22:40 +0000 Subject: [PATCH] New Dockerfile to work with glibc. --- .dockerignore | 3 ++- Dockerfile | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/.dockerignore b/.dockerignore index 9f97022..eb910ae 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,2 @@ -target/ \ No newline at end of file +target/ +.git diff --git a/Dockerfile b/Dockerfile index 4e889b6..6f0a183 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,35 @@ -# Yoinked from: -# https://github.com/emk/rust-musl-builder/blob/master/examples/using-diesel/Dockerfile -FROM ekidd/rust-musl-builder:stable AS builder -ADD --chown=rust:rust . ./ -RUN cargo build --release +# Builder image +FROM bougyman/voidlinux:glibc as builder +RUN xbps-install -Sy base-devel libressl-devel wget gnupg rustup +RUN rustup-init -qy -FROM alpine:latest -RUN apk --no-cache add ca-certificates +# Install tini for signal processing and zombie killing +ENV TINI_VERSION v0.18.0 +ENV TINI_SIGN_KEY 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7 +RUN set -eux; \ + wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini"; \ + wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$TINI_SIGN_KEY"; \ + gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \ + command -v gpgconf && gpgconf --kill all || :; \ + rm -r "$GNUPGHOME" /usr/local/bin/tini.asc; \ + chmod +x /usr/local/bin/tini; \ + tini --version + +# Build dicebot +RUN mkdir -p /root/src +WORKDIR /root/src +ADD . ./ +RUN . /root/.cargo/env && cargo build --release + +# Final image +FROM bougyman/voidlinux:latest +RUN xbps-install -Sy ca-certificates libstdc++ libressl COPY --from=builder \ - /home/rust/src/target/x86_64-unknown-linux-musl/release/dicebot \ + /root/src/target/release/dicebot \ /usr/local/bin/ -CMD /usr/local/bin/dicebot /config/dicebot-config.toml +COPY --from=builder \ + /usr/local/bin/tini \ + /usr/local/bin/ +ENTRYPOINT [ "/usr/local/bin/tini", "-v", "--", "/usr/local/bin/dicebot", "/config/dicebot-config.toml" ]