【问题标题】:can't isntall NGINX in a centOS7无法在 centOS7 中安装 NGINX
【发布时间】:2021-02-28 05:50:22
【问题描述】:

你能帮我解决这个问题吗?

我正在尝试使用 centOS 7 创建一个容器并在其上运行 nginx 和 PHP。这是我的 dockerfile:

FROM remote-host
COPY ./conf/nginx.repo /etc/yum.repos.d/nginx.repo
RUN                                                                          \
  yum -y install nginx-1.12.2 --enablerepo=nginx                  && \
  yum -y install https://repo.ius.io/ius-release-el7.rpm                  && \
  yum -y install                                                             \
    php71u-fpm                                                               \
    php71u-cli                                                               \
    php71u-mysqlnd                                                           \
    php71u-soap                                                              \
    php71u-xml                                                               \
    php71u-zip                                                               \
    php71u-json                                                              \
    php71u-mcrypt                                                            \
    php71u-mbstring                                                          \
    php71u-zip                                                               \
    php71u-gd                                                                \
     --enablerepo=ius-archive && yum clean all
EXPOSE 80 443
VOLUME /var/www/html /var/log/nginx /var/log/php-fpm /var/lib/php-fpm
COPY ./conf/nginx.conf /etc/nginx/conf.d/default.conf
COPY ./bin/start.sh /start.sh
RUN chmod +x /start.sh
CMD /start.sh

但是当 docker 开始创建它时会出现这个错误:

Building web
Step 1/9 : FROM remote-host
 ---> 678df95b4f1b
Step 2/9 : COPY ./conf/nginx.repo /etc/yum.repos.d/nginx.repo
 ---> Using cache
 ---> 2846848bf7b4
Step 3/9 : RUN                                                                            yum -y install nginx-1.12.2 --enablerepo=nginx                  &&   yum -y install https://repo.ius.io/ius-release-el7.rpm                  &&   yum -y install                                                                 php71u-fpm                                                                   php71u-cli                                                                   php71u-mysqlnd                                                               php71u-soap                                                                  php71u-xml                                                                   php71u-zip                                                                   php71u-json                                                                  php71u-mcrypt                                                                php71u-mbstring                                                              php71u-zip                                                                   php71u-gd                                                                     --enablerepo=ius-archive && yum clean all
 ---> Running in 16ffb3c86062
CentOS-8 - AppStream                            4.2 kB/s | 4.3 kB     00:01    
CentOS-8 - Base                                 3.5 kB/s | 3.9 kB     00:01    
CentOS-8 - Extras                               1.5 kB/s | 1.5 kB     00:00    
CentOS-8 - Extras                               5.4 kB/s | 8.6 kB     00:01    
Extra Packages for Enterprise Linux Modular 8 - 4.7 kB/s | 2.7 kB     00:00    
Extra Packages for Enterprise Linux Modular 8 -  27 kB/s |  97 kB     00:03    
Extra Packages for Enterprise Linux 8 - x86_64  5.1 kB/s | 3.9 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64  615 kB/s | 8.3 MB     00:13    
nginx repo                                       52 kB/s |  76 kB     00:01    
All matches were filtered out by modular filtering for argument: nginx-1.12.2
Error: Unable to find a match: nginx-1.12.2
ERROR: Service 'web' failed to build : The command '/bin/sh -c yum -y install nginx-1.12.2 --enablerepo=nginx                  &&   yum -y install https://repo.ius.io/ius-release-el7.rpm                  &&   yum -y install                                                                 php71u-fpm                                                                   php71u-cli                                                                   php71u-mysqlnd                                                               php71u-soap                                                                  php71u-xml                                                                   php71u-zip                                                                   php71u-json                                                                  php71u-mcrypt                                                                php71u-mbstring                                                              php71u-zip                                                                   php71u-gd                                                                     --enablerepo=ius-archive && yum clean all' returned a non-zero code: 1

为什么找不到nginx-1.12.2?还有,PHP版本有问题吗?

【问题讨论】:

  • 您省略了最重要的信息:remote-host 是什么?
  • 是 docker-compose 中的一个服务,它是一个 Centos7 容器,之前安装了其他服务

标签: php docker nginx docker-compose dockerfile


【解决方案1】:

这里有两个问题:

  • https://repo.ius.io/ius-release-el7.rpm 中也可以看到nginx,因此您需要先安装此源。

  • 这个源码中的nginx是1.16.1,看这个:

    # yum list | grep nginx
    nginx.x86_64                              1:1.16.1-2.el7                 @epel
    

    所以,如果你真的坚持1.12.2,你将不得不寻找一个新的来源。

php版本没问题,那么如果你不关心nginx版本,一个可行的最小Dockerfile作为下一个:

FROM centos:7
RUN                                                                          \
  yum -y install https://repo.ius.io/ius-release-el7.rpm                  && \
  yum -y install nginx-1.16.1                                             && \
  yum -y install                                                             \
    php71u-fpm                                                               \
    php71u-cli                                                               \
    php71u-mysqlnd                                                           \
    php71u-soap                                                              \
    php71u-xml                                                               \
    php71u-zip                                                               \
    php71u-json                                                              \
    php71u-mcrypt                                                            \
    php71u-mbstring                                                          \
    php71u-zip                                                               \
    php71u-gd                                                                \
     --enablerepo=ius-archive && yum clean all

【讨论】:

    【解决方案2】:

    为此目的所需的确切 Dockerfile:

    FROM remote-host
    
    LABEL Remarks="This is a Dockerfile for CentOS System"
    
    COPY ./conf/nginx.repo /etc/yum.repos.d/nginx.repo
    
    #Update Software Repository
    RUN yum -y install epel-release
    RUN yum -y update
    RUN yum -y install nginx
    
    EXPOSE 80 443
    VOLUME /var/www/html /var/log/nginx /var/log/php-fpm /var/lib/php-fpm
    COPY ./conf/nginx.conf /etc/nginx/conf.d/default.conf
    COPY ./bin/start.sh /start.sh
    RUN chmod +x /start.sh
    CMD /start.sh
    
    ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2021-01-10
      • 1970-01-01
      相关资源
      最近更新 更多