回答“29”apt-get安装提示xorg

我使用docker把一个脚本放在一起,当这个软件包xorg询问键盘的原始国家的提示时,它会卡住,我会附上图像。

我已经尝试从我读过的其他答案这样的命令pipe道

RUN echo "29" | apt-get install -y xorg 

但似乎没有工作。 我不知道如何得到这个自动回答29.任何帮助表示赞赏。

在这里输入图像说明

在这里输入图像说明

参考docker文件

 FROM ubuntu:16.04 MAINTAINER Joe Astrahan <email@hey.com> VOLUME ["/var/www"] #Install Apache & Basic Software RUN apt-get update && \ apt-get install -y \ software-properties-common \ apache2 \ curl \ libcurl3 \ libcurl3-dev #Install PHP 7.0 & mod apache RUN apt-get install -y \ php7.0 \ php7.0-cli \ libapache2-mod-php7.0 \ php7.0-gd \ php7.0-json \ php7.0-ldap \ php7.0-mysqlnd \ php7.0-pgsql \ php7.0-curl \ php7.0-xml \ php7.0-xsl \ php7.0-zip \ php7.0-sqlite3 \ php7.0-ldap \ php7.0-json \ php7.0-mbstring \ php7.0-soap \ php7.0-intl \ php7.0-bcmath \ php7.0-gmp \ php7.0-mcrypt #Install mysql, vim and openssl RUN apt-get install -y \ mysql-client \ vim \ openssl # Copy an initial PHP.ini file into the system with default settings #COPY config/php.ini /etc/php5/apache2/php.ini # Install php-5.5.30 #ADD config/install_php-5.5.30.sh /tmp/install_php-5.5.30.sh #RUN /bin/bash /tmp/install_php-5.5.30.sh # Set environment variables for Apache so we know its user and group names ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data # Configure Apache SSL and Standard Virtualhosts COPY config/apache_default.conf /etc/apache2/sites-available/000-default.conf COPY config/apache_default-ssl.conf /etc/apache2/sites-available/default-ssl.conf COPY config/run /usr/local/bin/run # Configure SSL Directories & Create Temporary SSL Keys RUN mkdir /etc/apache2/ssl RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt -subj "/C=US/ST=Florida/L=Fort Lauderdale/O=Pool Service Software LLC/OU=IT Department/CN=dev.poolservice.software.local" RUN chmod +x /usr/local/bin/run RUN a2enmod rewrite #Configure SSL On Apache2 & Headers Mod RUN a2enmod ssl RUN a2enmod headers RUN service apache2 restart RUN a2ensite default-ssl.conf RUN service apache2 restart #RUN apt-get install -y wkhtmltopdf #Download and install composer and git RUN apt-get install git -y RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer #Install Zip & Unzip RUN apt-get install zip unzip -y #Install NodeJS #RUN curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - RUN apt-get install -y nodejs RUN apt-get install -y npm #Install UglifyCSS and JS RUN npm install -g uglify-js RUN npm install -g uglifycss RUN npm install -g less # Download and install wkhtmltopdf RUN apt-get install -y build-essential RUN echo "29" | apt-get install -y xorg RUN apt-get install -y libssl-dev RUN apt-get install -y libxrender-dev RUN apt-get install -y wget RUN apt-get install -y gdebi RUN apt-get install -y libxrender1 RUN apt-get install -y xfonts-utils RUN apt-get install -y xfonts-base RUN apt-get install -y xfonts-75dpi RUN apt-get install -y libfontenc1 RUN apt-get install -y x11-common RUN apt-get install -y xfonts-encodings RUN apt-get install -y libxfont1 RUN apt-get install -y fontconfig RUN wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb RUN gdebi --n wkhtmltox-0.12.2.1_linux-trusty-amd64.deb RUN echo 'exec xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf "$@"' | tee /usr/local/bin/wkhtmltopdf.sh >/dev/null && sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh EXPOSE 80 EXPOSE 443 CMD ["/usr/local/bin/run"] 

我提供的Dockerfile有很多问题。

  1. 在Dockerfile中定义一个卷几乎没有任何价值。 在docker-compose.yml中定义这个或者作为你的运行命令的一部分要好得多。 我有一个博客文章解决这个问题。

  2. 从后来的apt-get install命令中拆分apt-get update可能会导致apt-get install失败。 关于这方面的最佳实践有一个部分。

  3. 对于你的错误信息,我会以非交互模式运行apt-get。 如果您在安装期间需要设置非默认值,您也可以预configurationdebconf 。

  4. 将每个apt-get拆分成单独的RUN命令会产生大量过多的图层,这些图层应尽可能地合并。 这也在最佳实践文档中进行了描述。

下面是一个安装命令的例子,它适用于我考虑到上述情况:

 FROM ubuntu:16.04 RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ build-essential \ xorg \ libssl-dev \ libxrender-dev \ wget \ gdebi \ libxrender1 \ xfonts-utils \ xfonts-base \ xfonts-75dpi