前言
大家在用docker build制作自己的image的時候,都会用RUN命令来执行一些操作来安装某些必须的软件。
而一些软件的安装过程中会需要用户来输入yes/no或者y/n来确定一些东西后才能进入到下一步的安装。
这个在Dockerfile可以这样解决。
如果是用yum来安装的场合
RUN yum install -y xxx
-y参数可以跳过软件的询问,相当于回答了yes。
如果是安装脚本的场合
比如我们用sh Anaconda3-4.4.0-Linux-x86_64.sh来安装anaconda的时候,”烦人”的anaconda会问四个问题,我的回答顺序分别是Enter,yes,Enter,yes。于是你可以这样写:
RUN sh -c ‘/bin/echo -e “ yes yes” | sh Anaconda3-4.4.0-Linux-x86_64.sh’
解决方案2
DEBIAN_FRONTEND=noninteractive 同样适用于shell 脚本
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y <software name>
FROM ubuntu:18.04
LABEL maintainer="sunsl@live.com"
ADD sources.list /etc/apt/
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt install nginx nginx-extras -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
VOLUME [ "/ect/nginx/","/etc/nginx/conf.d1","/data/nginx/logs" ]
EXPOSE 80 443
