【问题标题】:how can i pass arguments or bypass it in docker build process?我如何在 docker build 过程中传递参数或绕过它?
【发布时间】:2018-10-31 08:27:44
【问题描述】:

我为我的 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

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

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

  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

但没有结果,请帮忙

【问题讨论】:

  • 你可以试试these
  • 实际上Dockerfile 声明FROM ubuntu:18.04 仍然会从hub.docker.com 获得。你有什么理由要自己建造它?因为带有预配置 apache 的 docker 镜像已经存在。试试php:7.2-apache,它会毫不费力地工作。
  • @DharmaSaputra,是的,正确有各种图像可用于 php 应用程序,我的代码在 php5.5 中,我尝试了很多方法但无法使其工作,我有一些 curl 依赖项无法解决,有的话请分享。
  • 我希望这个配置可以帮助你:bitbucket.org/dharmasaputra775/docker-php-stack/src/master,我在我的一个项目中将它用于 php 5.5,它也可以工作。只需将基础镜像编辑为php:5.5-fpm,因为默认镜像是php:7.2-fpm

标签: docker docker-compose dockerfile docker-swarm docker-machine


【解决方案1】:

您可以在 Dockerfile 中的 RUN sudo apt-get install php libapache2-mod-php -y 之前设置环境变量 DEBIAN_FRONTEND=noninteractiveDEBCONF_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

您应该根据需要更改 EuropeBerlin

【讨论】:

    【解决方案2】:

    你可以试试这个(多提示)

    apt-get install x y
    

    【讨论】:

    • 试过了,这不起作用.. RUN sudo apt-get install php libapache2-mod-php 9 -y
    猜你喜欢
    • 2020-03-24
    • 2016-04-09
    • 2022-06-11
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多