Docker php ошибка установки mongodb с использованием composer - PullRequest
0 голосов
/ 05 августа 2020

Я использую в своем проекте Laravel mongodb с php. Когда я попытался запустить эту команду:

docker-compose exec php composer install

Затем в консоли появится сообщение об ошибке:

Failed to download mongodb/mongodb from dist: The zip extension and unzip command are both missing, skipping. Your command-line PHP is using multiple ini files. Run `php --ini` to show them.

Now trying to download from source

- Installing mongodb/mongodb (1.6.1): Cloning 4bb040c620

Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+95edf1f219f1+2020-08-05+0622
to retrieve a token. It will be stored in "/root/.composer/auth.json" for future use by Composer.
Token (hidden):

Вот все мои файлы:

Файл: docker -compose.yml

version: '3'

services:
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "${HOST_PORT}:80"
    volumes:
      - ../:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
  php:
    build:
      context: .
      dockerfile: ./Dockerfile
    container_name: php
    volumes:
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
      - ../:/var/www/html
  mongodb:
    image: mongo:latest
    container_name: mongodb
    ports:
      - "${MONGODB_PORT}:27017"
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    ports:
      - "${REDIS_PORT}:6379"
  artisan:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: artisan
    volumes:
      - ../:/var/www/html
    working_dir: /var/www/html
    entrypoint: ['/var/www/html/artisan']

Файл Dockerfile

FROM php:7.4-fpm

RUN apt-get update && apt-get install --yes --no-install-recommends \
    libssl-dev

RUN docker-php-ext-install pdo pdo_mysql

RUN pecl install mongodb \
    && docker-php-ext-enable mongodb

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

Файл .env для docker:

HOST_PORT=8004
HOST_SSL_PORT=3004

# Nginx
NGINX_HOST=localhost

# See https://hub.docker.com/r/nanoninja/php-fpm/tags/
PHP_VERSION=latest

MONGODB_PORT=27017
REDIS_PORT=6379

Файл php .ini

[Xdebug]
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM
xdebug.profiler_enable=0
xdebug.max_nesting_level=700
xdebug.remote_host=192.168.0.1 # your ip
xdebug.remote_port=9000

Файл nginx default.conf

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

1 Ответ

1 голос
/ 05 августа 2020

Измените файл докеров

FROM php:7.4-fpm

ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/

RUN install-php-extensions \
pdo_mysql \
zip \
mongodb

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
...