[英]Answer '29' to apt-get install prompt for xorg
I'm using docker to put together a script and its get stuck when this package xorg asks the prompt for the country of origin for the keyboard, I'll attach the image. 我正在使用docker来组合一个脚本,当这个包xorg询问键盘的原始国家的提示时它会卡住,我会附上图像。
I've tried piping in the command like this from other answers I've read 从我读过的其他答案中,我已经尝试过像这样的命令
RUN echo "29" | apt-get install -y xorg
But it didn't seem to work. 但它似乎没有用。 I'm not sure how I get this to auto answer 29. Any help is appreciated.
我不知道如何得到这个以自动回答29.任何帮助表示赞赏。
Reference to docker file 引用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"]
There are quite a few issues I see with the Dockerfile provided. 我在Dockerfile中看到了很多问题。
Defining a volume inside the Dockerfile provides little to no value. 在Dockerfile中定义一个卷几乎没有价值。 It's much better to define this in your docker-compose.yml or as part of your run command.
最好在docker-compose.yml中定义它,或者作为run命令的一部分。 I've got a blog post going through the issues with this.
我有一篇博文来解决这个问题。
Splitting up the apt-get update
from the later apt-get install
commands can result in situations where the apt-get install
will fail. 从后面的
apt-get install
命令拆分apt-get update
可能会导致apt-get install
失败。 There's a section in the best practices about this. 关于这一点的最佳实践中有一节。
For your error message, I'd run apt-get in the noninteractive mode. 对于您的错误消息,我将在非交互模式下运行apt-get。 You can also preconfigure debconf if you need a non-default value set during install.
如果在安装期间需要设置非默认值,也可以预先配置debconf 。
Splitting each apt-get into a separate RUN command is creating lots of excessive layers, these should be merged where possible. 将每个apt-get拆分为单独的RUN命令会创建大量过多的层,这些层应尽可能合并。 This is also described in the best practices documentation.
最佳实践文档中也对此进行了描述。
Here's a sample of an install command that works for me taking the above into account: 这是一个安装命令的示例,对我来说,考虑到上述因素:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.