Отказ от ответственности: я не очень хорошо знаком с Linux, Ubuntu, Docker и т. Д. Я знаю только некоторые вещи ...
Контекст программного обеспечения: Ubuntu 16.04 + docker + docker-compose
У меня есть Dockerfile, который, помимо прочего, также устанавливает PHP 7.2:
FROM ubuntu:16.04
....
RUN LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
RUN apt-get update
RUN apt-get install -y --force-yes php7.2-bcmath php7.2-cli php7.2-common php7.2-curl \
php7.2-cgi php7.2-dev php7.2-fpm php7.2-gd php7.2-gmp php7.2-imap php7.2-intl \
php7.2-json php7.2-mbstring php7.2-mysql \
php7.2-opcache php7.2-phpdbg php7.2-mongodb \
php7.2-readline php7.2-recode \
php7.2-tidy php7.2-xml php7.2-xsl php7.2-zip \
&& rm -rf /var/lib/apt/lists/*
....
В последний раз я создавал этот образ всего несколько недель назад и он отлично работал , контейнеры, которые я начал с этого образа, ведут себя как положено.
Я недавно обнаружил, что мне также нужно расширение PHP SOAP (не спрашивайте почему ...), поэтому я просто добавилрасширение php7.2-soap
в списке выше и сделало это:
docker-compose stop
docker-compose build <my_docker_service_name>
Сборка началась и, после загрузки нескольких вещей, она останавливается:
....
Get:112 http://archive.ubuntu.com/ubuntu xenial/main amd64 shtool all 2.0.8-8 [122 kB]
W: --force-yes is deprecated, use one of the options starting with --allow instead.
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2018g-0ubuntu0.16.04_all.deb 404 Not Found [IP: 91.189.88.152 80]
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-140.166_amd64.deb 404 Not Found [IP: 91.189.88.152 80]
E: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-3+ubuntu16.04.1+deb.sury.org+3_amd64.deb 404 Not Found
E: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1-3+ubuntu16.04.1+deb.sury.org+3_amd64.deb 404 Not Found
E: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/p/php-defaults/php-common_68+ubuntu16.04.1+deb.sury.org+1_all.deb 404 Not Found
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Fetched 57.5 MB in 43s (1331 kB/s)
ERROR: Service '<my_service_name>' failed to build: The command '/bin/sh -c apt-get install -y --force-yes php7.2 (....) && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
Итак, я сказал себечто простое добавление расширения SOAP не работает.Если вы перейдете на страницу PPA ppa: ondrej / php, вы увидите, что это очень запутанно, потому что другие расширения, успешно установленные Docker, там не перечислены.Вот почему я подумал, что добавление SOAP в список может сработать.
Поэтому я удалил расширение php7.2-soap
из списка и из любопытства попытался создать изображение еще раз.И ... сюрприз: не удалось точно так же.Несмотря на то, что он отлично работал всего несколько недель назад .
Итак, мои вопросы:
1).Есть идеи, как добавить туда расширение SOAP?Я думал об использовании официального образа PHP из DockerHub, но может быть довольно трудно заставить его работать вместе с другими вещами, которые у меня уже есть в моем Dockerfile, особенно ngingx.
2).Поскольку сборка завершилась неудачно, ничего не изменив в Dockerfile, означает ли это, что мой способ установки PHP ошибочен / устарел и должен быть заменен?Если да, то чем?Если нет, то почему это происходит?Это из-за простой сетевой ошибки?Или, может быть, потому что я использую Ubuntu-16.04 и мне нужно обновиться до 18.04 или аналогичного?