Build error using cargo patch with git dependencies in a docker container

Hi everyone!
This is a cross post of this StackOverflow thread. It might not have been the best place to put it as it's not receiving answers there.

I'm trying to build a docker container with some bleeding-edge crates that are available in git but not in crates.io. Moreover, those git dependencies depend on each other in a bit of a difficult way, so I have to use the patch section of the Cargo.toml file. Also, the project is in a workspace with multiple sub-crates.

The project compiles perfectly in local doing cargo build --bin frontend, but it fails to compile inside docker, giving the following error:

STEP 13: RUN cargo vendor > .cargo/config
    Updating git repository `https://github.com/GiGainfosystems/diesel`
error: failed to sync

Caused by:
  failed to load pkg lockfile

Caused by:
  failed to resolve patches for `https://github.com/rust-lang/crates.io-index`

Caused by:
  failed to load source for dependency `diesel`

Caused by:
  Unable to update https://github.com/GiGainfosystems/diesel?rev=0744b7e6e05582bf8fca21c0a5fbba08555abd94#0744b7e6

Caused by:
  object not found - no match for id (0744b7e6e05582bf8fca21c0a5fbba08555abd94); class=Odb (9); code=NotFound (-3)
Error: error building at STEP "RUN cargo vendor > .cargo/config": error while running runtime: exit status 101

As far as I can tell, it seems that it cannot find the revision with that commit hash in that GitHub repo, but I can see it here, and it works perfectly outside of docker.

This is the patching configuration:

[patch.crates-io.diesel]
git = "https://github.com/GiGainfosystems/diesel"
rev = "0744b7e6e05582bf8fca21c0a5fbba08555abd94"

[patch.crates-io.diesel_derives]
git = "https://github.com/GiGainfosystems/diesel"
rev = "0744b7e6e05582bf8fca21c0a5fbba08555abd94"

[patch.crates-io.diesel_migrations]
git = "https://github.com/GiGainfosystems/diesel"
rev = "0744b7e6e05582bf8fca21c0a5fbba08555abd94"

Do you know if I need to provide any git configuration to cargo to access this repository? or what do you think it could be happening?

For reference, this is the dockerfile configuration:

FROM rustlang/rust:nightly-alpine3.12 AS rust_builder
WORKDIR /root/rustbuild/
RUN apk -U upgrade
RUN apk add libpq

COPY Cargo.lock .
COPY Cargo.toml .
RUN mkdir .cargo

COPY backend ./backend
COPY frontend ./frontend
COPY common ./common
COPY scheduler ./scheduler
COPY cli_utils ./cli_utils

RUN cargo vendor > .cargo/config

RUN cargo build --bin frontend

Note that I'm using rustlang/rust:nightly-alpine3.12 as the Rust container because I need a nightly compiler, and Alpine for multiple reasons, among them the fact that this also includes a NodeJS part that would also use the same Alpine version.

Let me know if you need any further information, or if you have any idea on where could the issue be.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.