适用场景
当docker 构建环境不能链接到github 的时候,就可以使用本地构建的方式 完成对应服务的构建需求。
参考案例
使用本地安装包的方式安装 gRPC
注意:
在Docker构建过程中,某些软件包可能会尝试配置时区,这通常需要交互式输入。由于Docker构建过程是非交互式的,所以需要预先配置这些设置,以避免出现提示。
为了解决这个问题,你可以在Dockerfile中设置环境变量DEBIAN_FRONTEND
为noninteractive
,这样可以禁用交互式前端,避免在构建过程中出现提示。同时,你可以使用tzdata
软件包的配置文件来预先设置时区。
在下面的Dockerfile中,我添加了两行来处理时区设置:
ENV DEBIAN_FRONTEND=noninteractive
:这会设置环境变量,使得apt-get在安装软件包时不会尝试使用交互式前端。RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata
:这会设置默认的时区为Asia/Shanghai
,并重新配置tzdata
。
root@ubuntu:/mnt/mydisk/work/zmqDemo# cat Dockerfile FROM arm64v8/ubuntu:20.04 # 设置非交互式前端以避免用户交互提示 ENV DEBIAN_FRONTEND=noninteractive # 安装编译工具 RUN apt-get update && apt-get install -y \ build-essential \ autoconf \ libtool \ pkg-config \ clang \ cmake \ git \ golang \ curl # 设置时区 RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ dpkg-reconfigure --frontend noninteractive tzdata # 复制gRPC源代码压缩包到容器内 COPY grpc-v1.45.2.tar.bz2 /tmp/ # 解压gRPC源代码压缩包 RUN tar -xjvf /tmp/grpc-v1.45.2.tar.bz2 -C /tmp/ # 编译安装gRPC WORKDIR /tmp/grpc-v1.45.2 # 初始化子模块 #RUN git submodule update --init # 编译安装gRPC RUN mkdir -p cmake/build WORKDIR /tmp/grpc-v1.45.2/cmake/build RUN cmake ../.. RUN make RUN make install # 清理工作 RUN rm -rf /tmp/grpc-v1.45.2 #RUN rm /tmp/grpc-v1.45.2.tar.gz # 后续指令...
结果如下:
分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za