Я использую в своем проекте 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;
}
}