From 86d8fd16c835b776396ac4563a0a86efbbd82480 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 20 Aug 2019 16:15:55 +0300 Subject: [PATCH] initial commit --- .gitignore | 1 + .gitmodules | 3 +++ Dockerfile | 27 +++++++++++++++++++++++++++ alpine.Dockerfile | 39 +++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 25 +++++++++++++++++++++++++ nightly.Dockerfile | 30 ++++++++++++++++++++++++++++++ src | 1 + stable.Dockerfile | 30 ++++++++++++++++++++++++++++++ 8 files changed, 156 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Dockerfile create mode 100644 alpine.Dockerfile create mode 100644 docker-compose.yml create mode 100644 nightly.Dockerfile create mode 160000 src create mode 100644 stable.Dockerfile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3503ee --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/db diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a6cf1f2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src"] + path = src + url = ssh://git@gitea.b4tman.ru:4222/b4tman/qchgk_web.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4c92529 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM ekidd/rust-musl-builder:1.36.0 as builder + +COPY Cargo.toml /home/rust/src/ +COPY Cargo.lock /home/rust/src/ +RUN mkdir /home/rust/src/src && touch /home/rust/src/src/main.rs + +RUN sudo chown -R rust:rust . + +RUN cargo fetch +RUN cargo build --release || true + +RUN rm -f /home/rust/src/src/main.rs +COPY src /home/rust/src/src + +RUN cargo build --release + +FROM scratch + +COPY static /static +COPY templates /templates +COPY --from=builder /home/rust/src/target/x86_64-unknown-linux-musl/release/qchgk_web / + +VOLUME /db + +EXPOSE 8088/tcp + +ENTRYPOINT ["/qchgk_web"] diff --git a/alpine.Dockerfile b/alpine.Dockerfile new file mode 100644 index 0000000..d4690dc --- /dev/null +++ b/alpine.Dockerfile @@ -0,0 +1,39 @@ +FROM ekidd/rust-musl-builder:1.36.0 as builder + +COPY Cargo.toml /home/rust/src/ +COPY Cargo.lock /home/rust/src/ +RUN mkdir /home/rust/src/src && touch /home/rust/src/src/main.rs + +RUN sudo chown -R rust:rust . + +RUN cargo fetch +RUN cargo build --release || true + +RUN rm -f /home/rust/src/src/main.rs +COPY src /home/rust/src/src + +#COPY pre-main.rs /home/rust/src +#COPY add-Cargo.toml /home/rust/src\ +#RUN mv /home/rust/src/src/main.rs /home/rust/src/tmp-main.rs &&\ +# cat /home/rust/src/pre-main.rs > /home/rust/src/src/main.rs &&\ +# cat /home/rust/src/tmp-main.rs >> /home/rust/src/src/main.rs &&\ +# echo >> /home/rust/src/Cargo.toml &&\ +# cat /home/rust/src/add-Cargo.toml >> /home/rust/src/Cargo.toml + +#RUN sudo apt-get update && sudo apt-get install -y autogen automake git make + +RUN cargo build --release + +FROM alpine:3.10 + +RUN mkdir /app +COPY static /app/static +COPY templates /app/templates +COPY --from=builder /home/rust/src/target/x86_64-unknown-linux-musl/release/qchgk_web /app/qchgk_web +RUN ls -lsha /app/qchgk_web + +WORKDIR /app + +EXPOSE 8088/tcp + +CMD /app/qchgk_web diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d659223 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,25 @@ +version: '2' +services: + qchgk: + build: + context: src + dockerfile: ../stable.Dockerfile +# dockerfile: ../nightly.Dockerfile + image: 'b4tman/qchgk:actix' +# image: 'b4tman/qchgk:rocket' + container_name: 'qchgk' + ports: + - '8088:8088' + logging: + driver: json-file + options: + max-file: '5' + max-size: 10m + environment: + ROCKET_ENV: prod + ROCKET_PORT: 8088 +# RUST_BACKTRACE: 1 +# RUST_BACKTRACE: full + volumes: + - '/data/lab/docker/qchgk_web/db:/db/:ro' + diff --git a/nightly.Dockerfile b/nightly.Dockerfile new file mode 100644 index 0000000..52e7bf6 --- /dev/null +++ b/nightly.Dockerfile @@ -0,0 +1,30 @@ +FROM ekidd/rust-musl-builder:nightly-2019-07-08 as builder + +COPY Cargo.toml /home/rust/src/ +COPY Cargo.lock /home/rust/src/ +RUN mkdir /home/rust/src/src && \ + echo 'fn main() {}' > /home/rust/src/src/main.rs + +RUN sudo chown -R rust:rust . + +RUN cargo fetch +RUN cargo build --release + +RUN rm -f /home/rust/src/src/main.rs +COPY src /home/rust/src/src +RUN sudo chown -R rust:rust . && \ + touch /home/rust/src/src/main.rs + +RUN cargo build --release + +FROM scratch + +COPY static /static +COPY templates /templates +COPY --from=builder /home/rust/src/target/x86_64-unknown-linux-musl/release/qchgk_web / + +VOLUME /db + +EXPOSE 8088/tcp + +ENTRYPOINT ["/qchgk_web"] diff --git a/src b/src new file mode 160000 index 0000000..665bbaa --- /dev/null +++ b/src @@ -0,0 +1 @@ +Subproject commit 665bbaadfb80c2b0fa7679ffea426107873e5894 diff --git a/stable.Dockerfile b/stable.Dockerfile new file mode 100644 index 0000000..7740a81 --- /dev/null +++ b/stable.Dockerfile @@ -0,0 +1,30 @@ +FROM ekidd/rust-musl-builder:1.36.0 as builder + +COPY Cargo.toml /home/rust/src/ +COPY Cargo.lock /home/rust/src/ +RUN mkdir /home/rust/src/src && \ + echo 'fn main() {}' > /home/rust/src/src/main.rs + +RUN sudo chown -R rust:rust /home/rust/src/ + +RUN cargo fetch +RUN cargo build --release + +RUN rm -f /home/rust/src/src/main.rs +COPY src /home/rust/src/src +RUN sudo chown -R rust:rust /home/rust/src/ && \ + touch /home/rust/src/src/main.rs + +RUN cargo build --release + +FROM scratch + +COPY static /static +COPY templates /templates +COPY --from=builder /home/rust/src/target/x86_64-unknown-linux-musl/release/qchgk_web / + +VOLUME /db + +EXPOSE 8088/tcp + +ENTRYPOINT ["/qchgk_web"]