首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器(PHP + MongoDB扩展+‘`phpdotenv`’) mongodb/mongodb 1.9.0-alpha1 1需要ext-mongodb ^1.10.0 -> -它在系统中丢失了

Docker容器(PHP + MongoDB扩展+‘`phpdotenv`’) mongodb/mongodb 1.9.0-alpha1 1需要ext-mongodb ^1.10.0 -> -它在系统中丢失了
EN

Stack Overflow用户
提问于 2021-06-05 11:56:01
回答 1查看 220关注 0票数 0

我希望有一个正在运行的用于PHP的,它可以与MongoDB Atlas数据库进行远程交互。

我用硬编码和手动修复了一个定制的Docker以使MongoDB扩展正常工作。现在,在将其扩展到包括vlucas/phpdotenv编写器包时遇到了问题。通过研究其他位置,似乎还有其他方法可以运行单独的composer容器并映射相关驱动器:

https://hackernoon.com/get-composer-to-run-on-docker-container-a-how-to-guide-y86g36z7

但是我不能使用php:8.0-apache映像或我自己的自定义映像来运行它。

自定义映像构建为:

代码语言:javascript
复制
FROM php:8.0-apache

RUN apt-get update -y && apt-get upgrade -y && apt-get install git libssl-dev -y
RUN pecl install mongodb && docker-php-ext-enable mongodb
RUN echo "extension=mongodb.so" >> /usr/local/etc/php/php.ini
COPY --from=composer /usr/bin/composer /usr/bin/composer

EXPOSE 80 443

使用上面的自定义映像的docker-compose.yml是:

代码语言:javascript
复制
version: '2'

services:
  php:
    image: redswitch/php-mongodb:8.0-1.9.0-3
    container_name: php
    volumes:
      - ./html:/var/www/html
    restart: always
    environment:
      - VIRTUAL_HOST=www.domain.com
      - LETSENCRYPT_HOST=www.domain.com
      - LETSENCRYPT_EMAIL=admin@domain.com
      - "TZ=Europe/London"
    ports:
      - 80
    expose:
      - 80
    restart: unless-stopped

  composer:
    image: composer:2.0
    command: ["composer", "install"]
    volumes:
      - ./html:/app

networks:
  default:
    external:
      name: nginx-proxy-net

./html位置是composer.json

代码语言:javascript
复制
{
    "require": {
        "mongodb/mongodb": "^1.9.0-alpha1",
        "vlucas/phpdotenv": "^5.3.0"
    }
}

我尝试过不同的最低版本,例如^1.8.0^1.9.0和上面的。这将根据composer.json文件中指定的版本提供相同错误消息的差异。

composer容器按预期的方式启动和停止。这是容器的日志:

代码语言:javascript
复制
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.,
Loading composer repositories with package information,
Updating dependencies,
Your requirements could not be resolved to an installable set of packages.,
,
  Problem 1,
    - Root composer.json requires mongodb/mongodb ^1.9.0-alpha1 -> satisfiable by mongodb/mongodb[1.9.0-alpha1].,
    - mongodb/mongodb 1.9.0-alpha1 requires ext-mongodb ^1.10.0 -> it is missing from your system. Install or enable PHP's mongodb extension.,
,
To enable extensions, verify that they are enabled in your .ini files:,
    - /usr/local/etc/php/php-cli.ini,
    - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
    - /usr/local/etc/php/conf.d/docker-php-ext-zip.ini,
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.,

使用php调用检查phpinfo()容器,我可以看到启用了MongoDB扩展v1.9.0,并在以下位置加载了配置文件和附加配置:

  • /usr/local/etc/php/php.ini
  • /usr/local/etc/php/conf.d/docker-php-ext-mongodb.ini,/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini

我如何克服这个问题?

这是部署PHP+MongoDB+Composer+PHPDotEnv的正确方式吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-15 11:31:12

将此添加到composer.json中

代码语言:javascript
复制
"provide" : {
    "ext-mongodb": "*"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67849319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档