Arris
@Arris
Сапиенсы учатся, играя.

Docker: the requested PHP extension bcmath is missing from your system. Как чинить?

Dockerfile:
FROM ubuntu:xenial

ENV DEBIAN_FRONTEND noninteractive
ENV LC_ALL C.UTF-8

RUN apt-get -yqq update && \
    apt-get -yqq install ca-certificates gcc make nano dialog libjpeg-dev libpng-dev libfreetype6-dev

RUN echo "Europe/Moscow" > /etc/timezone

RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:ondrej/php

RUN apt-get update -yqq && \
    apt-get install -yqq \
        php7.2 \
        php7.2-common php7.2-mysql php7.2-mbstring php7.2-soap php7.2-cli php7.2-intl php7.2-json php7.2-xsl php7.2-xml \
        php7.2-imap php7.2-ldap php7.2-curl php7.2-gd php7.2-dev php7.2-fpm php7.2-bcmath php7.2-zip && \
	apt-get install pkg-config && \
    apt-get install -yq --no-install-recommends && \
    apt-get install -yqq composer

RUN echo "date.timezone=Europe/Moscow" > /etc/php/7.2/cli/conf.d/timezone.ini

COPY php-conf/fpm.conf      /etc/php/7.2/fpm/php-fpm.conf
COPY php-conf/www.conf      /etc/php/7.2/fpm/pool.d/www.conf

RUN usermod -aG www-data www-data
RUN  dpkg-reconfigure -f noninteractive tzdata

COPY start.sh /start.sh
RUN chmod +x /start.sh

CMD ["/start.sh"]

WORKDIR /var/www/

EXPOSE 9000

Билдим в образ `arris_php`

docker-compose.yaml
version: '3.3'
networks:
  tabun_network:
    driver: bridge
services:
  php:
    container_name: tabun_php
    image: arris_php
    restart: always
    networks:
      - tabun_network
    volumes:
      - "./www:/var/www/html"
      - "./log/php/:/var/log/php/"

  composer:
    container_name: tabun_composer
    image: "composer"
    networks:
      - tabun_network
    volumes:
      - "./www:/app"
    command: install


Результат:
Problem 1
    - Installation request for smarty-gettext/smarty-gettext 1.4.0 -> satisfiable by smarty-gettext/smarty-gettext[1.4.0].
    - smarty-gettext/smarty-gettext 1.4.0 requires ext-gettext * -> the requested PHP extension gettext is missing from your system.
  Problem 2
    - php-amqplib/php-amqplib v2.8.1 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
    - php-amqplib/php-amqplib v2.8.0 requires ext-bcmath * -> the requested PHP extension bcmath is missing from your system.
    - Installation request for php-amqplib/php-amqplib ^2.8 -> satisfiable by php-amqplib/php-amqplib[v2.8.0, v2.8.1].


Куда копать?
Нет, поставить расширение через docker-ext-install не помогает.

P.S. Отмечу, что вне докер-контейнера на той же совокупности пакетов композер отрабатывает штатно. Кроме того, композер отрабатаывает штатно, если в interactive mode положить файл ручками внутрь контейнера из изнутри контейнера же запустить composer install.
  • Вопрос задан
  • 1602 просмотра
Решения вопроса 2
Возможно будут применимы рекомендации из раздела Suggestions->PHP Extensions? https://hub.docker.com/_/composer/
Ответ написан
Arris
@Arris Автор вопроса
Сапиенсы учатся, играя.
Решение:
docker run --rm --interactive --tty --volume $PWD/www:/app composer install --ignore-platform-reqs --no-scripts
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы