Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to import local library dependency #283

Open
rsb-tbg opened this issue Oct 23, 2024 · 0 comments
Open

Unable to import local library dependency #283

rsb-tbg opened this issue Oct 23, 2024 · 0 comments

Comments

@rsb-tbg
Copy link

rsb-tbg commented Oct 23, 2024

Hey all,

I have a project that looks like this:

project/
---app-backend/ **rust binary
---file-processor/ **rust binary
---gcp-sdk/ **rust library
---project-config/
------...
------docker-compose.yaml

Both app-backend and file-processor depend on gcp-sdk and each of their cargo.toml's use a relative path of "../gcp-sdk". They both compile just fine.

In my docker-compose, I'm setting the context at the project/ level. I've provided my Dockerfile for file-processor below but I continue to get the further-below error.

I've removed cargo chef from my Dockerfile and it builds correctly without issue. Does anybody have any idea what I'm doing wrong with cargo chef (because I would like to continue using it)?

# Base image for building the Rust application
FROM lukemathwalker/cargo-chef:latest-rust-latest AS chef
WORKDIR /app
RUN apt update && apt install -y lld clang

# Planner stage
FROM chef AS planner
COPY ./gcp-sdk /app/gcp-sdk
COPY ./file-processor /app/file-processor

WORKDIR /app/file-processor

# Compute a lock-like file for the project dependencies
RUN cargo chef prepare --recipe-path /app/recipe.json

# Builder stage
FROM chef AS builder
COPY --from=planner /app/recipe.json recipe.json

# Build dependencies using the prepared recipe.json
RUN cargo chef cook --release --recipe-path recipe.json

# Copy the source code after the dependencies are cached
COPY --from=planner /app/gcp-sdk /app/gcp-sdk
COPY --from=planner /app/file-processor /app/file-processor

# Build the Rust binary
RUN cargo build --release --bin file-processor

# Runtime stage
FROM debian:bookworm-slim AS runtime
RUN apt-get update -y \
    && apt-get install -y --no-install-recommends openssl ca-certificates \
    && apt-get autoremove -y \
    && apt-get clean -y \
    && rm -rf /var/lib/apt/lists/*

# Copy the compiled binary from the build stage
COPY --from=builder /app/target/release/file-processor /app/file-processor

COPY ./project-config/configuration /app/configuration
COPY ./project-config/wait-for-it.sh /app/wait-for-it.sh
RUN chmod +x /app/wait-for-it.sh

# Entry point for the backend binary
ENTRYPOINT ["/app/file-processor"]

And here's the build error:

rsb-tbg@MacBook-Pro project-config % docker compose up --build
[+] Building 9.7s (16/23)                                                                                                            docker:desktop-linux
 => [file-processor internal] load build definition from Containerfile                                                                               0.0s
 => => transferring dockerfile: 1.47kB                                                                                                               0.0s
 => [file-processor internal] load metadata for docker.io/library/debian:bookworm-slim                                                               0.3s
 => [file-processor internal] load metadata for docker.io/lukemathwalker/cargo-chef:latest-rust-latest                                               0.3s
 => [file-processor internal] load .dockerignore                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                      0.0s
 => [file-processor chef 1/3] FROM docker.io/lukemathwalker/cargo-chef:latest-rust-latest@sha256:e279910c5108e3acf843cb910e7ce1726e0ab37bd3eb394fb8  0.0s
 => [file-processor internal] load build context                                                                                                     0.9s
 => => transferring context: 2.98MB                                                                                                                  0.9s
 => [file-processor runtime 1/6] FROM docker.io/library/debian:bookworm-slim@sha256:36e591f228bb9b99348f584e83f16e012c33ba5cad44ef5981a1d7c0a93eca2  0.0s
 => CACHED [file-processor runtime 2/6] RUN apt-get update -y     && apt-get install -y --no-install-recommends openssl ca-certificates     && apt-  0.0s
 => CACHED [file-processor chef 2/3] WORKDIR /app                                                                                                    0.0s
 => CACHED [file-processor chef 3/3] RUN apt update && apt install -y lld clang                                                                      0.0s
 => CACHED [file-processor planner 1/4] COPY ./gcp-sdk /app/gcp-sdk                                                                                  0.0s
 => [file-processor planner 2/4] COPY ./file-processor /app/file-processor                                                                           4.4s
 => [file-processor planner 3/4] WORKDIR /app/file-processor                                                                                         0.0s
 => [file-processor planner 4/4] RUN cargo chef prepare --recipe-path /app/recipe.json                                                               0.1s
 => CACHED [file-processor builder 1/5] COPY --from=planner /app/recipe.json recipe.json                                                             0.0s
 => ERROR [file-processor builder 2/5] RUN cargo chef cook --release --recipe-path recipe.json                                                       0.3s
------                                                                                                                                                    
 > [file-processor builder 2/5] RUN cargo chef cook --release --recipe-path recipe.json:                                                                  
0.123 warning: unused manifest key: bin.0.plugin                                                                                                          
0.123 warning: unused manifest key: lib.plugin                                                                                                            
0.148     Updating crates.io index                                                                                                                        
0.248 error: failed to get `gcp-sdk` as a dependency of package `file-processor v0.0.1 (/app)`
0.248 
0.248 Caused by:
0.248   failed to load source for dependency `gcp-sdk`
0.248 
0.248 Caused by:
0.248   Unable to update /gcp-sdk
0.248 
0.248 Caused by:
0.248   failed to read `/gcp-sdk/Cargo.toml`
0.248 
0.248 Caused by:
0.248   No such file or directory (os error 2)
0.249 thread 'main' panicked at /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/cargo-chef-0.1.68/src/recipe.rs:218:27:
0.249 Exited with status code: 101
0.249 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
------
failed to solve: process "/bin/sh -c cargo chef cook --release --recipe-path recipe.json" did not complete successfully: exit code: 101

Thanks for any help!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant