1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
wget -c -e "https_proxy=127.0.0.1:10808" https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2.tar.gz
cat - > arm64.list <<'EOF'
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main main restricted universe multiverse
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# deb-src [arch=arm64] https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
EOF
cat - > Dockerfile <<'EOF'
FROM ubuntu:20.04
ARG CMake_Version
ARG CMake_file
ARG Icraft_FILE
ARG CustomOp_FILE
ARG Icraft_whl_FILE
# 先用 http(关键!)
RUN rm -f /etc/apt/sources.list && \
echo "deb http://mirrors.ustc.edu.cn/ubuntu focal main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.ustc.edu.cn/ubuntu focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && \
echo "deb http://mirrors.ustc.edu.cn/ubuntu focal-security main restricted universe multiverse" >> /etc/apt/sources.list
# 先装证书
RUN apt-get update && apt-get install -y ca-certificates
# 再切回 https(可选)
RUN sed -i 's|http://|https://|g' /etc/apt/sources.list
RUN sed -i 's/^deb /deb [arch=amd64,i386] /' /etc/apt/sources.list; sed -i 's/^deb-src /deb-src [arch=amd64,i386] /' /etc/apt/sources.list
COPY arm64.list /etc/apt/sources.list.d/
RUN dpkg --add-architecture arm64 && apt update && apt install -y \
sudo \
build-essential \
libssl-dev \
ninja-build \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu \
libdw-dev:arm64 \
libstdc++6:arm64
RUN mkdir -p /home/icraft
ENV HOME /home/icraft
COPY ${Icraft_FILE} ${CustomOp_FILE} ${CMake_file} /home/icraft
RUN cd /home/icraft; tar -zxvf ${CMake_file} && cd cmake-${CMake_Version} && ./bootstrap && make -j$(($(nproc)*2)) && make install -j$(($(nproc)*2))
RUN cd /home/icraft; dpkg -i ${Icraft_FILE} ${CustomOp_FILE}
WORKDIR /home/icraft
EOF
# 构建镜像,指定icraft的安装包及其依赖的算子安装包
docker build --build-arg CMake_Version=3.24.2 --build-arg CMake_file=cmake-3.24.2.tar.gz --build-arg Icraft_FILE=Icraft_3.6.2_arm64.deb --build-arg CustomOp_FILE=CustomOp_3.6.2_arm64.deb -t icraft:3.6.2 .
# 清理构建缓存
docker system prune -f
|