代码之家  ›  专栏  ›  技术社区  ›  Andreas Hunter

使用composer安装Docker php mongodb时出错

  •  0
  • Andreas Hunter  · 技术社区  · 4 年前

    我在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;
        }
    }
    
    0 回复  |  直到 4 年前
        1
  •  2
  •   online Thomas    3 年前

    更改您的Docker文件

        FROM php:7.4-fpm
        
        ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/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