Using rust alpine image

pull/3/head
Heretic 3 years ago
parent 46859677d5
commit 78c3752b15

@ -1,5 +1,5 @@
tab_spaces = 2
edition="2018"
imports_layout="HorizontalVertical"
merge_imports=true
imports_granularity="Crate"
reorder_imports=true

60
Cargo.lock generated

@ -693,9 +693,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
[[package]]
name = "futures"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1adc00f486adfc9ce99f77d717836f0c5aa84965eb0b4f051f4e83f7cab53f8b"
checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca"
dependencies = [
"futures-channel",
"futures-core",
@ -708,9 +708,9 @@ dependencies = [
[[package]]
name = "futures-channel"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9"
checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888"
dependencies = [
"futures-core",
"futures-sink",
@ -718,15 +718,15 @@ dependencies = [
[[package]]
name = "futures-core"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99"
checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d"
[[package]]
name = "futures-executor"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c"
checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c"
dependencies = [
"futures-core",
"futures-task",
@ -735,15 +735,15 @@ dependencies = [
[[package]]
name = "futures-io"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582"
checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377"
[[package]]
name = "futures-macro"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57"
checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb"
dependencies = [
"autocfg",
"proc-macro-hack",
@ -754,21 +754,21 @@ dependencies = [
[[package]]
name = "futures-sink"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53"
checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11"
[[package]]
name = "futures-task"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2"
checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99"
[[package]]
name = "futures-util"
version = "0.3.16"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78"
checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481"
dependencies = [
"autocfg",
"futures-channel",
@ -1009,9 +1009,9 @@ checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
[[package]]
name = "libsqlite3-sys"
version = "0.22.2"
version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d"
checksum = "abd5850c449b40bacb498b2bbdfaff648b1b055630073ba8db499caf2d0ea9f2"
dependencies = [
"cc",
"pkg-config",
@ -1348,9 +1348,9 @@ dependencies = [
[[package]]
name = "r2d2_sqlite"
version = "0.18.0"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d24607049214c5e42d3df53ac1d8a23c34cc6a5eefe3122acb2c72174719959"
checksum = "54ca3c9468a76fc2ad724c486a59682fc362efeac7b18d1c012958bc19f34800"
dependencies = [
"r2d2",
"rusqlite",
@ -1435,9 +1435,9 @@ dependencies = [
[[package]]
name = "rusqlite"
version = "0.25.3"
version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57adcf67c8faaf96f3248c2a7b419a0dbc52ebe36ba83dd57fe83827c1ea4eb3"
checksum = "8a82b0b91fad72160c56bf8da7a549b25d7c31109f52cc1437eac4c0ad2550a7"
dependencies = [
"bitflags",
"fallible-iterator",
@ -1528,18 +1528,18 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.126"
version = "1.0.130"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.126"
version = "1.0.130"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
dependencies = [
"proc-macro2",
"quote",
@ -1548,9 +1548,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.66"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127"
checksum = "e466864e431129c7e0d3476b92f20458e5879919a0596c6472738d9fa2d342f8"
dependencies = [
"itoa",
"ryu",

@ -9,18 +9,18 @@ actix-web = "3.3.2"
actix-files = "0.5.0"
env_logger = "0.9.0"
serde = "1.0.126"
serde_json = "1.0.66"
serde_derive = "1.0.126"
serde = "1.0.130"
serde_json = "1.0.69"
serde_derive = "1.0.130"
futures = "0.3.16"
futures = "0.3.17"
failure = "0.1.8"
r2d2 = "0.8.9"
r2d2_sqlite = "0.18.0"
r2d2_sqlite = "0.19.0"
[dependencies.rusqlite]
version = "0.25.3"
version = "0.26.1"
features = ["bundled"]
[dev-dependencies.cargo-husky]

@ -1,4 +1,4 @@
ARG RUST_BUILDER_IMAGE=ekidd/rust-musl-builder:stable
ARG RUST_BUILDER_IMAGE=rust:1.56-alpine
# Front end
FROM node:10-jessie as node
@ -21,37 +21,29 @@ COPY ./data ./data
COPY ./build_sqlite.sh .
RUN ./build_sqlite.sh
# Rust cargo chef build
FROM $RUST_BUILDER_IMAGE as planner
WORKDIR /app
# We only pay the installation cost once,
# it will be cached from the second build onwards
FROM $RUST_BUILDER_IMAGE as chef
USER root
RUN apk add musl-dev
RUN cargo install cargo-chef
WORKDIR /app
# Chef plan
FROM chef as planner
COPY ./Cargo.toml ./Cargo.lock .
COPY ./src src
RUN cargo chef prepare --recipe-path recipe.json
FROM $RUST_BUILDER_IMAGE as cacher
# Chef build
FROM chef as builder
ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl
ARG RUSTRELEASEDIR="debug"
WORKDIR /app
RUN cargo install cargo-chef
COPY --from=planner /app/recipe.json ./recipe.json
RUN cargo chef cook --target ${CARGO_BUILD_TARGET} --recipe-path recipe.json
FROM $RUST_BUILDER_IMAGE as builder
ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl
ARG RUSTRELEASEDIR="debug"
WORKDIR /app
COPY ./Cargo.toml ./Cargo.lock .
COPY ./src src
# Copy over the cached dependencies
COPY --from=cacher /app/target target
COPY --from=cacher /home/rust/.cargo /home/rust/.cargo
RUN cargo build
RUN cargo build --target ${CARGO_BUILD_TARGET}
# reduce binary size
RUN strip ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/torrents-csv-service
@ -60,14 +52,12 @@ RUN cp ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/torrents-csv-service /app/to
# The runner
FROM alpine:3
RUN addgroup -S myuser && adduser -S myuser -G myuser
# Copy resources
COPY --from=builder /app/torrents-csv-service /app/
COPY --from=node /app/ui/dist /app/dist
COPY --from=db_file_builder /app/torrents.db /app/torrents.db
RUN addgroup -g 1000 torrents-csv-service
RUN adduser -D -s /bin/sh -u 1000 -G torrents-csv-service torrents-csv-service
RUN chown torrents-csv-service:torrents-csv-service /app/torrents-csv-service
USER torrents-csv-service
EXPOSE 8080
USER myuser
CMD ["/app/torrents-csv-service"]

@ -1,4 +1,4 @@
ARG RUST_BUILDER_IMAGE=ekidd/rust-musl-builder:stable
ARG RUST_BUILDER_IMAGE=rust:1.56-alpine
# Front end
FROM node:10-jessie as node
@ -21,38 +21,29 @@ COPY ./data ./data
COPY ./build_sqlite.sh .
RUN ./build_sqlite.sh
# Rust cargo chef build
FROM $RUST_BUILDER_IMAGE as planner
WORKDIR /app
# We only pay the installation cost once,
# it will be cached from the second build onwards
FROM $RUST_BUILDER_IMAGE as chef
USER root
RUN apk add musl-dev
RUN cargo install cargo-chef
WORKDIR /app
# Chef plan
FROM chef as planner
COPY ./Cargo.toml ./Cargo.lock .
COPY ./src src
RUN ls
RUN cargo chef prepare --recipe-path recipe.json
FROM $RUST_BUILDER_IMAGE as cacher
# Chef build
FROM chef as builder
ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl
ARG RUSTRELEASEDIR="release"
WORKDIR /app
RUN cargo install cargo-chef
COPY --from=planner /app/recipe.json ./recipe.json
RUN cargo chef cook --release --target ${CARGO_BUILD_TARGET} --recipe-path recipe.json
FROM $RUST_BUILDER_IMAGE as builder
ARG CARGO_BUILD_TARGET=x86_64-unknown-linux-musl
ARG RUSTRELEASEDIR="release"
WORKDIR /app
COPY ./Cargo.toml ./Cargo.lock .
COPY ./src src
# Copy over the cached dependencies
COPY --from=cacher /app/target target
COPY --from=cacher /home/rust/.cargo /home/rust/.cargo
RUN cargo build --release
RUN cargo build --release --target ${CARGO_BUILD_TARGET}
# reduce binary size
RUN strip ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/torrents-csv-service
@ -61,14 +52,12 @@ RUN cp ./target/$CARGO_BUILD_TARGET/$RUSTRELEASEDIR/torrents-csv-service /app/to
# The runner
FROM alpine:3
RUN addgroup -S myuser && adduser -S myuser -G myuser
# Copy resources
COPY --from=builder /app/torrents-csv-service /app/
COPY --from=node /app/ui/dist /app/dist
COPY --from=db_file_builder /app/torrents.db /app/torrents.db
RUN addgroup -g 1000 torrents-csv-service
RUN adduser -D -s /bin/sh -u 1000 -G torrents-csv-service torrents-csv-service
RUN chown torrents-csv-service:torrents-csv-service /app/torrents-csv-service
USER torrents-csv-service
EXPOSE 8080
USER myuser
CMD ["/app/torrents-csv-service"]

Loading…
Cancel
Save