65 lines
2.3 KiB
Docker
65 lines
2.3 KiB
Docker
FROM source.spushk.ru/rustyworks/rust-alpine-mimalloc:1.95 as build
|
|
WORKDIR /build
|
|
ENV OPENSSL_DIR=/usr
|
|
ENV TARGET_CC=x86_64-linux-musl-clang
|
|
ENV CARGO_BUILD_TARGET=x86_64-unknown-linux-musl
|
|
COPY .cargo .cargo
|
|
COPY rust-toolchain.toml rust-toolchain.toml
|
|
RUN --mount=type=secret,id=cargo-token \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cat /run/secrets/cargo-token | cargo login --quiet --registry Technologygeek
|
|
|
|
FROM build as planner
|
|
WORKDIR /build
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cargo chef prepare --recipe-path=recipe.json
|
|
|
|
FROM build as build-debug
|
|
WORKDIR /build
|
|
COPY --from=planner /build/recipe.json recipe.json
|
|
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cargo --config=.cargo/container_debug.toml \
|
|
chef cook --recipe-path=recipe.json
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cargo --config=.cargo/container_debug.toml \
|
|
test
|
|
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cargo --config=.cargo/container_debug.toml \
|
|
build
|
|
|
|
FROM build as build-release
|
|
WORKDIR /build
|
|
COPY --from=planner /build/recipe.json recipe.json
|
|
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cargo --config=.cargo/container_release.toml \
|
|
chef cook --release --recipe-path=recipe.json
|
|
COPY . .
|
|
RUN --mount=type=cache,target=/usr/local/cargo/registry,id=cargo_registry \
|
|
--mount=type=cache,target=/usr/local/rustup,id=rustup_cache \
|
|
cargo --config=.cargo/container_release.toml \
|
|
build --release
|
|
|
|
FROM scratch as app
|
|
WORKDIR /
|
|
VOLUME /adsbot.db
|
|
VOLUME /adsbot.log
|
|
EXPOSE 3000
|
|
|
|
FROM app as app-debug
|
|
WORKDIR /
|
|
COPY --from=build-debug /build/target/x86_64-unknown-linux-musl/debug/adsbot /adsbot
|
|
ENV RUST_LOG="debug"
|
|
ENTRYPOINT [ "/adsbot" ]
|
|
|
|
FROM app as app-release
|
|
WORKDIR /
|
|
COPY --from=build-release /build/target/x86_64-unknown-linux-musl/release/adsbot /adsbot
|
|
ENV RUST_LOG="info"
|
|
ENTRYPOINT [ "/adsbot" ]
|