基于Ubuntu 18.04构建Docker镜像时卡在tzdata配置环节的问题求助
基于Ubuntu 18.04构建Docker镜像时卡在tzdata配置环节的问题求助
我之前也碰到过一模一样的问题!这是因为Ubuntu 18.04系统里的tzdata包在安装过程中会触发交互式的时区选择对话框,但Docker的构建过程默认是非交互式的,没办法手动输入选择,所以就一直卡在那里等待输入了。
解决这个问题的核心就是让apt在非交互模式下完成tzdata的安装,具体可以通过设置环境变量来实现,下面给你两种可行的修改方案:
方案一:提前设置环境变量(推荐)
在Dockerfile的开头添加两个环境变量,跳过交互式配置并指定默认时区:
FROM ubuntu:18.04 # 关键配置:设置非交互模式+指定时区,避免tzdata卡住 ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Shanghai # 这里可以换成你需要的时区,比如Europe/London # 合并重复的apt命令,减少镜像层数(额外优化) RUN apt-get update && apt-get install -y \ python3.10 python3-pip \ openjdk-8-jdk \ bowtie2 \ zlib1g-dev \ libbz2-dev \ liblzma-dev \ python-pip \ wget \ pigz pbzip2 \ && rm -rf /var/lib/apt/lists/* # 后续的RSeQC、biopython、Atria、findtail安装命令保持不变即可
方案二:在单个RUN命令中临时设置环境变量
如果不想全局设置环境变量,也可以在执行apt安装时临时指定:
RUN DEBIAN_FRONTEND=noninteractive TZ=Asia/Shanghai apt-get update && apt-get install -y python3.10 python3-pip
补充说明:
DEBIAN_FRONTEND=noninteractive会强制apt以非交互模式运行,不会弹出任何配置对话框;TZ变量用来指定默认时区,tzdata会自动采用这个值,不需要手动选择;- 你的Dockerfile里有很多重复的
apt-get update,建议合并成一个RUN命令,既能减少镜像的层数,也能提升构建效率。
备注:内容来源于stack exchange,提问作者pubsurfted
相关产品推荐
相关产品推荐

