Dockerfile build fails with flyctl but succeeds with docker build

Hi :wave:

System Info:
Info:
OS: MacOS Monterey v12.4 (M1 mac)
Rust: 1.61
Docker: 20.10.14

It appears as tho for some reason running building Dockerfile fails via:

fly deploy --dockerfile ./Dockerfile

However, building the Dockerfile succeeds via:

docker build --file Dockerfile .

I don’t understand why one fly deploy fails to build from the Dockerfile but docker cli doesn’t.

Dockerfile:

FROM lukemathwalker/cargo-chef:latest-rust-1.59.0 AS chef
WORKDIR /app
RUN apt update && apt install lld clang -y

FROM chef as planner
COPY . .
# Compute a lock-like file for our project
RUN cargo chef prepare  --recipe-path recipe.json

FROM chef as builder
COPY --from=planner /app/recipe.json recipe.json
# Build our project dependencies, not our application!
RUN RUST_BACKTRACE=full cargo chef cook --release --recipe-path recipe.json
COPY . .
ENV SQLX_OFFLINE true
# Build our project
RUN RUST_BACKTRACE=full cargo build --release --bin my_app_name

FROM debian:bullseye-slim AS runtime
WORKDIR /app
RUN apt-get update -y \
  && apt-get install -y --no-install-recommends openssl \
  # Clean up
  && apt-get autoremove -y \
  && apt-get clean -y \
  && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/my_app_name my_app_name
COPY configuration configuration
ENV APP_ENVIRONMENT production

The error when running with fly deploy:

 => ERROR [builder 2/4] RUN RUST_BACKTRACE=full cargo chef cook --release --recipe-path recipe.json                              57.7s
------
 > [builder 2/4] RUN RUST_BACKTRACE=full cargo chef cook --release --recipe-path recipe.json:
#15 5.023     Updating crates.io index
#15 57.35 thread 'main' panicked at 'Process terminated by signal', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/cargo-chef-0.1.35/src/recipe.rs:146:21
#15 57.36 stack backtrace:
#15 57.53    0:       0x4000262eac - std::backtrace_rs::backtrace::libunwind::trace::h91c465e73bf6c785
#15 57.53                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
#15 57.53    1:       0x4000262eac - std::backtrace_rs::backtrace::trace_unsynchronized::hae9da36f5d58b5f3
#15 57.53                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
#15 57.53    2:       0x4000262eac - std::sys_common::backtrace::_print_fmt::h7f499fa126a7effb
#15 57.53                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/sys_common/backtrace.rs:67:5
#15 57.54    3:       0x4000262eac - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h3e2b509ce2ce6007
#15 57.54                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/sys_common/backtrace.rs:46:22
#15 57.55    4:       0x400028a46c - core::fmt::write::h753c7571fa063ecb
#15 57.55                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/fmt/mod.rs:1168:17
#15 57.55    5:       0x400025e9f3 - std::io::Write::write_fmt::h2815c0519c99ba09
#15 57.55                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/io/mod.rs:1660:15
#15 57.55    6:       0x40002654a2 - std::sys_common::backtrace::_print::h64941a6fc8b0ed9b
#15 57.55                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/sys_common/backtrace.rs:49:5
#15 57.55    7:       0x40002654a2 - std::sys_common::backtrace::print::hcf25e43e1a9b0766
#15 57.55                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/sys_common/backtrace.rs:36:9
#15 57.55    8:       0x40002654a2 - std::panicking::default_hook::{{closure}}::h78d3e6cf97fc623d
#15 57.55                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:211:50
#15 57.56    9:       0x4000265085 - std::panicking::default_hook::hda898f8d3ad1a5ae
#15 57.56                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:228:9
#15 57.56   10:       0x4000265af3 - std::panicking::rust_panic_with_hook::h1a5ea2d6c23051aa
#15 57.56                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:606:17
#15 57.56   11:       0x40000e0a75 - std::panicking::begin_panic::{{closure}}::h2fb07ab4493432bf
#15 57.56   12:       0x40000e0824 - std::sys_common::backtrace::__rust_end_short_backtrace::hc726cc452f594529
#15 57.56   13:       0x400004081c - std::panicking::begin_panic::h9d8f2a73df757c47
#15 57.56   14:       0x40000ba1f2 - chef::recipe::Recipe::cook::h32eec23368710f95
#15 57.56   15:       0x40000539ae - cargo_chef::main::h03c19b3564c8791c
#15 57.56   16:       0x400005a0e3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h8702e7ac2dd3ac90
#15 57.56   17:       0x400005aa3d - std::rt::lang_start::{{closure}}::h34b4f9a348042eb5
#15 57.56   18:       0x4000262560 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h443f738a8e9f947a
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/ops/function.rs:259:13
#15 57.57   19:       0x4000262560 - std::panicking::try::do_call::h1e21ba261ba489ec
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:406:40
#15 57.57   20:       0x4000262560 - std::panicking::try::h6afd48af8b6c96ac
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:370:19
#15 57.57   21:       0x4000262560 - std::panic::catch_unwind::h85dd95e0bab7fb60
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panic.rs:133:14
#15 57.57   22:       0x4000262560 - std::rt::lang_start_internal::{{closure}}::h038455e697c8b03e
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/rt.rs:128:48
#15 57.57   23:       0x4000262560 - std::panicking::try::do_call::h6b0ad65979f3077a
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:406:40
#15 57.57   24:       0x4000262560 - std::panicking::try::h010108d314169ac6
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:370:19
#15 57.57   25:       0x4000262560 - std::panic::catch_unwind::hff397f912b1535c2
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panic.rs:133:14
#15 57.57   26:       0x4000262560 - std::rt::lang_start_internal::h52e73755f77c7dd9
#15 57.57                                at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/rt.rs:128:20
#15 57.57   27:       0x4000056c52 - main
#15 57.58   28:       0x4001bd2d0a - __libc_start_main
#15 57.58   29:       0x400004912a - _start
#15 57.58   30:                0x0 - <unknown>
------
Error failed to fetch an image or build from source: error building: executor failed running [/bin/sh -c RUST_BACKTRACE=full cargo chef cook --release --recipe-path recipe.json]: exit code: 101

I just had the same problem. Using:

flyctl deploy --remote-only

worked for me.

Thank you that works for me!

Just for your information - this is likely a problem with cross-compilation for amd64 on the M1 Macs. You can try to reproduce with docker build --platform linux/amd64.