我如何在 docker 构建过程中传递参数或绕过它?
how can i pass arguments or bypass it in docker build process?
我为我的 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 sudo apt-get install php libapache2-mod-php -y
我卡住了,因为它要求用户输入,比如::
请select您居住的地理区域。后续配置
问题将通过提供城市列表来缩小范围,代表
他们所在的时区。
- 非洲 4.澳大利亚 7.大西洋 10.太平洋 13.等等
- 美洲 5.北极 8.欧洲 11.SystemV
- 南极洲 6.亚洲 9.印度 12.美国
地理区域:
我无法继续前进,我试过这样:
RUN sudo apt-get install php libapache2-mod-php -y 9
没有结果,求助
你可以试试这个(多次提示)
apt-get install x y
您可以在 RUN sudo apt-get install php libapache2-mod-php -y
.
之前在 Dockerfile 中设置环境变量 DEBIAN_FRONTEND=noninteractive
和 DEBCONF_NONINTERACTIVE_SEEN=true
您的 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
您应该根据需要更改 Europe
和 Berlin
。
我为我的 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 sudo apt-get install php libapache2-mod-php -y
我卡住了,因为它要求用户输入,比如::
请select您居住的地理区域。后续配置 问题将通过提供城市列表来缩小范围,代表 他们所在的时区。
- 非洲 4.澳大利亚 7.大西洋 10.太平洋 13.等等
- 美洲 5.北极 8.欧洲 11.SystemV
- 南极洲 6.亚洲 9.印度 12.美国 地理区域:
我无法继续前进,我试过这样:
RUN sudo apt-get install php libapache2-mod-php -y 9
没有结果,求助
你可以试试这个(多次提示)
apt-get install x y
您可以在 RUN sudo apt-get install php libapache2-mod-php -y
.
DEBIAN_FRONTEND=noninteractive
和 DEBCONF_NONINTERACTIVE_SEEN=true
您的 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
您应该根据需要更改 Europe
和 Berlin
。