我希望有一个正在运行的用于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映像或我自己的自定义映像来运行它。
自定义映像构建为:
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是:
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
{
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}我尝试过不同的最低版本,例如^1.8.0、^1.9.0和上面的。这将根据composer.json文件中指定的版本提供相同错误消息的差异。
composer容器按预期的方式启动和停止。这是容器的日志:
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,并在以下位置加载了配置文件和附加配置:
我如何克服这个问题?
这是部署PHP+MongoDB+Composer+PHPDotEnv的正确方式吗?
发布于 2021-12-15 11:31:12
将此添加到composer.json中
"provide" : {
"ext-mongodb": "*"
}https://stackoverflow.com/questions/67849319
复制相似问题