我正在尝试在 MacBookPro M1 上构建一个 Docker 镜像,但每次都失败。该镜像基于官方的 Rust 镜像,目标是构建它,以便我可以在我的服务器上运行它,服务器使用的是 Ubuntu。
Dockerfile 文件:
构建命令:
构建输出:
Dockerfile 文件:
FROM rust:1.59 as builder
WORKDIR /usr/src/auth-server
COPY . .
RUN cargo install --path .
FROM debian:buster-slim
WORKDIR /usr/app
COPY ./common/*.sh ./
RUN apt-get update && apt-get install -y default-mysql-client && rm -rf /var/lib/apt/lists/*
RUN chmod +x ./wait-for-it.sh ./wait-for-mysql.sh
COPY --from=builder /usr/local/cargo/bin/auth-server /usr/local/bin/auth-server
ENTRYPOINT [ "./wait-for-mysql.sh" ]
CMD ["auth-server"]
构建命令:
docker build auth-server -t ta_auth_server:latest --platform linux/x86_64
Cargo.toml:
[package]
name = "auth-server"
version = "0.1.0"
edition = "2018"
[dependencies]
actix-web = "3.3.2" # HTTP Server
actix-cors = "0.5.4" # HTTP Server CORS middleware
futures = "0.3" # Async Helpers
r2d2 = "0.8" # SQL Connection Pool
jsonwebtoken = "7.2.0" # Authentication
ring = "0.16.20" # Crypto
tracing = "0.1.28" # Logging
tracing-subscriber = "0.3"
toml = "0.5.8" # TOML Config
rust-argon2 = "1.0" # Secure Password Hasher
rand = "0.8" # Secure Random
base64 = "0.13" # Base 64 Encoder/Decoder
serde_json = "1.0" # Serial JSON
[dependencies.diesel] # Database client
git = "https://github.com/diesel-rs/diesel"
rev = "c06aa5ed88d2670d6e0d68124a6b426f22ab5079" # 2.0.0
#version = "1.4.8"
features = ["mysql", "chrono", "serde_json", "r2d2"]
[dependencies.serde] # Serial
version = "1.0.130"
features = ["derive"]
[dependencies.chrono] # UTC Time
version = "0.4"
features = ["serde"]
[dependencies.smallvec] # Performat Vec
version = "1.6.1"
features = ["serde"]
构建输出:
#1 [internal] load build definition from Dockerfile
#1 sha256:6c3945f4e6a239ff4dfe37b0796b3f999128b83fc3b215f2886dbf03e20e2536
#1 transferring dockerfile: 37B 0.0s done
#1 DONE 0.0s
#2 [internal] load .dockerignore
#2 sha256:1caa71207477144555998e3d3648069c238cfe141a13e87658cf83476d0b1d8a
#2 transferring context: 34B done
#2 DONE 0.0s
#4 [internal] load metadata for docker.io/library/rust:1.59
#4 sha256:c2b8f0eec313f72bc7d2c52435b15771ad2e6be09ae47d3c2e0efe02283ca8fc
#4 DONE 1.0s
#3 [internal] load metadata for docker.io/library/debian:buster-slim
#3 sha256:9eff6dca560982b2e63ff856e62cbe563510aefae21ffbf5035ede9ce6b0ad90
#3 DONE 1.6s
#5 [stage-1 1/6] FROM docker.io/library/debian:buster-slim@sha256:fac2ae50be3f4e0901582e5c0ef00d06b1f599315a2077ab5b8ea7e304ddbee4
#5 sha256:b57f8a54c82b181481466e63f43b4243eb95be6efaf5095d58ab11aefda979cc
#5 DONE 0.0s
#11 [builder 1/4] FROM docker.io/library/rust:1.59@sha256:7c0ea3ee40fc4f12a43de1b9967bc5df1337bf469253c322a98952079493448b
#11 sha256:a97310b0b2f637acd07ecedbd207a8c9f5c5fa98a5eda098f441030d1a2a3446
#11 DONE 0.0s
#7 [internal] load build context
#7 sha256:d9a90ea0dce73a2dd2991c2f59f285a419d35192dba66861392823f655cc7cfb
#7 transferring context: 760B done
#7 DONE 0.0s
#12 [builder 2/4] WORKDIR /usr/src/auth-server
#12 sha256:1d5c76722440262694bbeca90924483cc0feb891d9d59c3c5721b6b36b982b45
#12 CACHED
#9 [stage-1 4/6] RUN apt-get update && apt-get install -y default-mysql-client && rm -rf /var/lib/apt/lists/*
#9 sha256:62d2853cc00902fa4338d0f296ef4921b4d2d7a356f805779e68bfcbbb79c89e
#9 CACHED
#6 [stage-1 2/6] WORKDIR /usr/app
#6 sha256:b743b8f0c2aa26b2111dd0c1092ffa4b9f29629158ed2b6e5a56c712ae2af991
#6 CACHED
#8 [stage-1 3/6] COPY ./common/*.sh ./
#8 sha256:2f9508b5b0a03c2c64132822174b78677547b0524012d1e45f351b2cd040a70f
#8 CACHED
#10 [stage-1 5/6] RUN chmod +x ./wait-for-it.sh ./wait-for-mysql.sh
#10 sha256:2dfd8162b6cefda29f9e9019846fab392ffa07eeafdcf546962645fc2edad05a
#10 CACHED
#13 [builder 3/4] COPY . .
#13 sha256:9455a328aff0e42274d134c73d12d65ee90822ff0e2ba4151132e1753f011c3f
#13 CACHED
#14 [builder 4/4] RUN cargo install --path .
#14 sha256:51e2661717978ed5209e1835d5f13955acd9066df77b3f2db3cd635ec199c2f2
#14 2.737 Installing auth-server v0.1.0 (/usr/src/auth-server)
#14 6.591 Updating crates.io index
#14 57.11 Killed
#14 ERROR: executor failed running [/bin/sh -c cargo install --path .]: exit code: 137
------
> [builder 4/4] RUN cargo install --path .:
------
executor failed running [/bin/sh -c cargo install --path .]: exit code: 137
我认为它已经耗尽了内存,但我不知道为什么以及如何解决它。 有什么想法吗?
Cargo.toml
文件? - Philippeerror: failed to parse manifest at '/usr/src/auth-server/Cargo.toml'
- Philipperust
吗?看看它是否可行? - Philippe