# 使用官方 Rust 镜像作为构建环境
FROM hb.eazytec-cloud.com/eazytec/eazydevelop-rust:ubuntu22.04-rust1.89.0-latest as builder

# 设置 Rust 默认工具链
RUN rustup default stable

WORKDIR /app

# 复制 Cargo.toml
COPY Cargo.toml ./

# 创建虚拟项目来缓存依赖
RUN mkdir src && echo "fn main() {}" > src/main.rs

# 构建依赖（这一步会被缓存）
RUN cargo build --release

# 删除虚拟项目并复制源代码
RUN rm -rf src
COPY src ./src

# 构建实际应用
RUN cargo build --release

# 生产环境
FROM hb.eazytec-cloud.com/eazytec/eazydevelop-rust:ubuntu22.04-rust1.89.0-latest

# 设置 Rust 默认工具链
RUN rustup default stable

WORKDIR /app

# 从构建阶段复制二进制文件
COPY --from=builder /app/target/release/hello_world /app/hello_world

# 设置环境变量
ENV APP_PORT_1=8000

# 暴露端口
EXPOSE $APP_PORT_1

# 使用自定义启动脚本
COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
