Dockerfile 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # 第一阶段:构建阶段
  2. FROM rust:1.84 as builder
  3. # 创建工作目录
  4. WORKDIR /usr/src/mirror-proxy
  5. # 配置 cargo 使用 rsproxy 镜像
  6. RUN mkdir -p /usr/local/cargo/ && \
  7. echo '[source.crates-io]\n\
  8. replace-with = "rsproxy-sparse"\n\
  9. \n\
  10. [source.rsproxy]\n\
  11. registry = "https://rsproxy.cn/crates.io-index"\n\
  12. \n\
  13. [source.rsproxy-sparse]\n\
  14. registry = "sparse+https://rsproxy.cn/index/"\n\
  15. \n\
  16. [registries.rsproxy]\n\
  17. index = "https://rsproxy.cn/crates.io-index"\n\
  18. \n\
  19. [net]\n\
  20. git-fetch-with-cli = true' > /usr/local/cargo/config.toml
  21. # 复制项目文件
  22. COPY . .
  23. # 构建发布版本
  24. RUN cargo build --release
  25. # 第二阶段:运行阶段
  26. FROM ubuntu:22.04
  27. # 安装必要的运行时依赖
  28. RUN apt-get update && \
  29. apt-get install -y libssl3 && \
  30. rm -rf /var/lib/apt/lists/*
  31. WORKDIR /app
  32. COPY ./templates ./templates
  33. # 从构建阶段复制二进制文件
  34. COPY --from=builder /usr/src/mirror-proxy/target/release/mirror-proxy /app/mirror-proxy
  35. # 复制配置文件
  36. COPY config.toml /app/config.toml
  37. # 暴露端口(根据项目实际端口配置)
  38. EXPOSE 8080
  39. # 设置启动命令
  40. CMD ["/app/mirror-proxy"]