V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
beneo
V2EX  ›  Rust

在 Mac 上构建跨平台 Rust Docker Image 时遇到问题

  •  
  •   beneo · 28 天前 · 524 次点击

    我在尝试在我的 Mac 机器上创建一个 Rust 项目的 Docker 镜像,并希望能够在 x86_64 架构的 Linux 机器上运行它。我已经尝试了几天,但仍然无法成功构建镜像。下面是我的 Dockerfile:

    
    WORKDIR /usr/src/hello-rust
    
    # Install dependencies including gcc, and then create a symbolic link if necessary
    RUN apk update && \
        apk add --no-cache musl-dev openssl-dev pkgconf build-base openssl gcc && \
        # If creating a symbolic link is necessary, uncomment the following line:
        ln -s /usr/bin/gcc /usr/bin/x86_64-linux-gnu-gcc
    
    ENV OPENSSL_LIB_DIR=/usr/lib \
        OPENSSL_INCLUDE_DIR=/usr/include \
        PKG_CONFIG_ALLOW_CROSS=1 \
        OPENSSL_STATIC=true
    
    COPY . .
    
    RUN cargo build --release --target=x86_64-unknown-linux-gnu
    
    FROM alpine:3.19
    
    RUN apk add --no-cache libgcc openssl
    
    WORKDIR /root/
    
    COPY --from=builder /usr/src/hello-rust/target/release/hello-rust .
    
    EXPOSE 9007
    
    CMD ["./hello-rust"]
    
    

    实话说,我就是一个 hello rust ,主要是 Dockerfile 追求最小 size 的镜像,所以用了 alpine ,查了很多资料,你们也可以看到我的 Dockerfile 也是 GPT4 改的,我也是才知道 Mac 到 Linux 有个 x86_64-unknown-linux-gnu ,但是一直没有配置好,请大神指点。

    3 条回复    2024-04-02 17:24:22 +08:00
    rrfeng
        1
    rrfeng  
       28 天前
    怎么个无法成功法,至少给个报错信息吧……
    DsuineGP
        2
    DsuineGP  
       28 天前
    - 如果运行时镜像非得用 alpine, 那么编译时镜像建议使用 x86_64-unknown-linux-musl 工具链, 例如 rust:1.77.1-alpine3.19. 依赖项中使用 rusttls 替换 openssl, 开启静态链接.
    - 如果不是的话, 编译器镜像用 x86_64-linux-gnu-gcc 工具链, 例如 rust:1.77.1-buster, 运行时镜像用 debian:buster-slim, 使用 apt install openssl

    需要注意的是, 使用 c/c++/rust 的程序, 编译时的环境和运行时的环境时强相关的
    beneo
        3
    beneo  
    OP
       28 天前
    @DsuineGP 懂哥啊,GPT 都搞不定还得是过来人,我试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2641 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:06 · PVG 22:06 · LAX 07:06 · JFK 10:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.