summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.dockerignore3
-rw-r--r--.gitignore1
-rw-r--r--extra/Dockerfile42
3 files changed, 46 insertions, 0 deletions
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..c0c1b99
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,3 @@
+target/debug/
+target/debian/
+target/release/
diff --git a/.gitignore b/.gitignore
index 2ead7e1..9588412 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@ src/build/
# Don't ignore this file itself
!.gitignore
+!.dockerignore
diff --git a/extra/Dockerfile b/extra/Dockerfile
new file mode 100644
index 0000000..3704acf
--- /dev/null
+++ b/extra/Dockerfile
@@ -0,0 +1,42 @@
+# build image
+FROM ekidd/rust-musl-builder:stable as builder
+
+# pre-build dependencies in a fake workplace
+RUN USER=root cargo new --bin es-public-proxy
+WORKDIR ./es-public-proxy
+COPY ./Cargo.lock ./Cargo.lock
+COPY ./Cargo.toml ./Cargo.toml
+RUN cargo build --release
+RUN rm src/*.rs
+
+# then mount in real source code (which may have been updated during dev) and build release binary
+ADD . ./
+
+RUN rm ./target/x86_64-unknown-linux-musl/release/deps/es_public_proxy*
+RUN cargo build --release
+
+# from here, the application environment
+FROM alpine:latest
+
+ARG APP=/usr/src/app
+
+EXPOSE 9292
+
+ENV TZ=Etc/UTC \
+ APP_USER=appuser
+
+RUN addgroup -S $APP_USER \
+ && adduser -S -g $APP_USER $APP_USER
+
+RUN apk update \
+ && apk add --no-cache ca-certificates tzdata \
+ && rm -rf /var/cache/apk/*
+
+COPY --from=builder /home/rust/src/es-public-proxy/target/x86_64-unknown-linux-musl/release/es-public-proxy ${APP}/es-public-proxy
+
+RUN chown -R $APP_USER:$APP_USER ${APP}
+
+USER $APP_USER
+WORKDIR ${APP}
+
+CMD ["./es-public-proxy", "--unsafe-all-indices"]