#php #docker #nginx #docker-compose #dockerfile
#php #docker #nginx #docker-compose #dockerfile
Вопрос:
можете ли вы помочь мне с этим?
Я пытаюсь создать контейнер с 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 amp;amp;
yum -y install https://repo.ius.io/ius-release-el7.rpm amp;amp;
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 amp;amp; 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 amp;amp; yum -y install https://repo.ius.io/ius-release-el7.rpm amp;amp; 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 amp;amp; 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 amp;amp; yum -y install https://repo.ius.io/ius-release-el7.rpm amp;amp; 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 amp;amp; yum clean all' returned a non-zero code: 1
почему nginx-1.12.2 не может быть найден? кроме того, есть какие-либо проблемы с версией PHP?
Комментарии:
1. Вы опускаете самую важную информацию: что такое
remote-host
?2. это служба в docker-compose, которая представляет собой контейнер Centos7 с другими службами, установленными ранее
Ответ №1:
Здесь есть 2 проблемы:
-
nginx
Также просматриваетсяhttps://repo.ius.io/ius-release-el7.rpm
, поэтому сначала вам нужно установить этот исходный код. -
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 amp;amp;
yum -y install nginx-1.16.1 amp;amp;
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 amp;amp; yum clean all
Ответ №2:
Точный файл Dockerfile, необходимый для этой цели:
<— language-all: lang-html —>
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;"]