diff --git a/problem_01/Cargo.toml b/problem_01/Cargo.toml index 20b0f47..8f8cb81 100644 --- a/problem_01/Cargo.toml +++ b/problem_01/Cargo.toml @@ -3,7 +3,7 @@ name = "problem_01" version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] +env_logger = "^0.10" +log = "^0.4" tokio = { version = "1.27.0", features = ["full"] } diff --git a/problem_01/Dockerfile b/problem_01/Dockerfile new file mode 100644 index 0000000..a6413a6 --- /dev/null +++ b/problem_01/Dockerfile @@ -0,0 +1,22 @@ +FROM rust:latest as builder + +WORKDIR /usr/src/app +COPY . . +# Will build and cache the binary and dependent crates in release mode +RUN --mount=type=cache,target=/usr/local/cargo,from=rust:latest,source=/usr/local/cargo \ + --mount=type=cache,target=target \ + cargo build --release && mv ./target/release/problem_01 ./problem_01 + +# Runtime image +FROM debian:bullseye-slim + +# Run as "app" user +RUN useradd -ms /bin/bash app + +USER app +WORKDIR /app + +# Get compiled binaries from builder's cargo install directory +COPY --from=builder /usr/src/app/problem_01 /app/problem_01 + +# No CMD or ENTRYPOINT, see fly.toml with `cmd` override. diff --git a/problem_01/src/main.rs b/problem_01/src/main.rs index 3b3e7e5..3fa13b2 100644 --- a/problem_01/src/main.rs +++ b/problem_01/src/main.rs @@ -17,13 +17,13 @@ async fn main() -> Result<(), Box> { Ok(n) if n == 0 => return, Ok(n) => n, Err(e) => { - eprintln!("failed to read from socket; err = {:?}", e); + log::error!("failed to read from socket; err = {:?}", e); return; } }; if let Err(e) = socket.write_all(&buf[0..n]).await { - eprintln!("failed to write to socket; err = {:?}", e); + log::error!("failed to write to socket; err = {:?}", e); return; } }