Dockerfile 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. FROM debian:bullseye
  2. # 设置工作目录
  3. WORKDIR /build-image
  4. # 将本地的脚本复制到工作目录
  5. COPY *.sh ./
  6. # 设置用来存放rust缓存的卷
  7. VOLUME [ "/root/.cargo/registry" ]
  8. # 设置rust源的环境变量
  9. ENV RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
  10. ENV RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
  11. RUN sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.ustc.edu.cn@g" /etc/apt/sources.list && apt update && apt install -y \
  12. ca-certificates \
  13. curl \
  14. gnupg \
  15. lsb-release \
  16. llvm-dev libclang-dev clang gcc-multilib \
  17. gcc build-essential fdisk dosfstools qemu-kvm \
  18. sudo wget
  19. # 安装Rust
  20. RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly -y && \
  21. # You have to add the rustup variables to the $PATH
  22. echo "export PATH=\"\$HOME/.cargo/bin:\$PATH\"" >> ~/.bashrc && \
  23. bash -c "source $HOME/.cargo/env && \
  24. # 更换cargo的索引源
  25. touch $HOME/.cargo/config && \
  26. bash change_rust_src.sh && \
  27. # 安装rust的编译工具
  28. echo "正在安装DragonOS所需的rust组件...首次安装需要一些时间来更新索引,请耐心等待..." && \
  29. cargo install cargo-binutils && \
  30. rustup toolchain install nightly && \
  31. rustup default nightly && \
  32. rustup component add rust-src && \
  33. rustup component add llvm-tools-preview && \
  34. rustup target add x86_64-unknown-none"
  35. # 编译安装GCC交叉编译工具链
  36. RUN bash build_gcc_toolchain.sh -f
  37. # 清除缓存
  38. WORKDIR /
  39. RUN apt-get autoremove -q -y && \
  40. apt-get clean -q -y && \
  41. rm -rf /build-image
  42. ENV DragonOS_GCC=/root/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin/
  43. # 设置容器启动后执行的命令
  44. CMD ["/bin/bash"]