我如何在 docker 构建过程中传递参数或绕过它?

Muk*_*ndS 3 docker dockerfile docker-compose docker-swarm docker-machine

我为我的 PHP 应用程序编写了一个 Dockerfile,而不是从 dockerhub 我从头开始创建它。

例如:

 FROM ubuntu:18.04
 RUN apt-get update && \
       apt-get install -y --no-install-recommends apt-utils && \
       apt-get -y install sudo

 RUN sudo apt-get install apache2 -y
 RUN sudo apt-get install mysql-server -y
 RUN sudo apt-get install php libapache2-mod-php -y 
 RUN rm -rf /var/www/html/
 COPY . /var/www/html/
 WORKDIR /var/www/html/
 EXPOSE 80
 RUN chmod -R 777 /var/www/html/app/tmp/

 CMD systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)

在这一步:

 RUN sudo apt-get install php libapache2-mod-php -y
Run Code Online (Sandbox Code Playgroud)

我被卡住了,因为它要求用户输入,比如:

请选择您居住的地理区域。随后的配置问题将通过显示城市列表来缩小范围,代表它们所在的时区。

  1. 非洲 4. 澳大利亚 7. 大西洋 10. 太平洋 13. 等
  2. 美国 5. 北极 8. 欧洲 11. SystemV
  3. 南极洲 6. 亚洲 9. 印度 12. 美国地理区域:

我无法提前,我试过这样:

RUN sudo apt-get install php libapache2-mod-php -y 9
Run Code Online (Sandbox Code Playgroud)

但是没有结果,请帮忙

Con*_*enu 7

你可以设置环境变量DEBIAN_FRONTEND=noninteractiveDEBCONF_NONINTERACTIVE_SEEN=true前将Dockerfile, RUN sudo apt-get install php libapache2-mod-php -y

您的 Dockerfile 应如下所示:

FROM ubuntu:18.04


RUN apt-get update && \
       apt-get install -y --no-install-recommends apt-utils && \
       apt-get -y install sudo

RUN sudo apt-get install apache2 -y
RUN sudo apt-get install mysql-server -y


## for apt to be noninteractive
ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN true

## preesed tzdata, update package index, upgrade packages and install needed software
RUN echo "tzdata tzdata/Areas select Europe" > /tmp/preseed.txt; \
    echo "tzdata tzdata/Zones/Europe select Berlin" >> /tmp/preseed.txt; \
    debconf-set-selections /tmp/preseed.txt && \
    apt-get update && \
    apt-get install -y tzdata



RUN sudo apt-get install php libapache2-mod-php -y
RUN rm -rf /var/www/html/
COPY . /var/www/html/
WORKDIR /var/www/html/
EXPOSE 80
RUN chmod -R 777 /var/www/html/app/tmp/

CMD systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)

你应该改变Europe,并Berlin与wath你想要的。