Tôi đang vật lộn với điều này. Tôi đã theo dõi Khởi động nhanh cho PHP của @Michael_Lynn, nhưng anh ấy đang chạy trên máy tính xách tay dành cho nhà phát triển địa phương Tôi đang cố sao chép bằng Docker container. Tôi nghĩ rằng mình đã có nó khi CHỈ yêu cầu tiện ích mở rộng MongoDB, vì tôi phải thay đổi (mã hóa cứng) một số giá trị thành 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
- [email protected]
- "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
6. Nhưng bây giờ tôi cần gói 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
- [email protected]
- "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
7 tiếp theo, gói 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
- [email protected]
- "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
8 phá vỡ cấu hình ở trênNgay bây giờ, cách gần nhất tôi có được là sử dụng Docker Image của chính khách hàng của mình với 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
Điều này được triển khai dưới dạng một vùng chứa với cấu hình 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
- [email protected]
- "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
9 sauversion: '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
- [email protected]
- "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
Trong thư mục {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
0 là {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
1{
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
Tôi đã thử các phiên bản tối thiểu khác nhau, chẳng hạn như 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
- [email protected]
- "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
0 , 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
- [email protected]
- "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
1 và các phiên bản trên. Điều này cung cấp các phương sai của cùng một thông báo lỗi tùy thuộc vào phiên bản nào được chỉ định trong tệp {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
1Công-ten-nơ 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
- [email protected]
- "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
7 khởi động và dừng, như mong đợi. Đây là nhật ký của containerNo 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.,
Kiểm tra vùng chứa 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
- [email protected]
- "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
4 bằng lệnh gọi 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
- [email protected]
- "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
5, tôi có thể thấy rằng tiện ích mở rộng MongoDB v1. 9. 0 được bật, với tệp cấu hình đã tải và cấu hình bổ sung tại- /usr/local/etc/php/php. ban đầu
- /usr/local/etc/php/conf. d/docker-php-ext-mongodb. ini, /usr/local/etc/php/conf. d/docker-php-ext-sodium. ban đầu
Làm thế nào để tôi khắc phục vấn đề này? Đây có phải là cách chính xác để triển khai PHP+MongoDB+Composer+PHPDotEnv không? Xin chào @Dan_Burt, Dan_BurtTôi đang cố sao chép bằng Docker container. Tôi nghĩ rằng mình đã có nó khi CHỈ yêu cầu tiện ích mở rộng MongoDB, vì tôi phải thay đổi (mã hóa cứng) một số giá trị thành 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
- [email protected]
- "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
6. Nhưng bây giờ tôi cần gói 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
- [email protected]
- "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
7 tiếp theo, gói 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
- [email protected]
- "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
8 phá vỡ cấu hình ở trên
Nhìn thoáng qua, có vẻ như vấn đề liên quan đến tệp 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
- [email protected]
- "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
9. Điều này là do không có tệp hiện có tên là {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
0 khi bạn xây dựng {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
1Có vẻ như dòng mới {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
2 vừa được thêm vào một tệp trống. Tôi nghĩ những gì bạn muốn làm thay vào đó là nối thêm dòng vào {
"require": {
"mongodb/mongodb": "^1.9.0-alpha1",
"vlucas/phpdotenv": "^5.3.0"
}
}
3 và đổi tên/sao chép tệp thành 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
- [email protected]
- "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
9Hy vọng rằng điều đó sẽ hữu ích, nếu bạn có thêm câu hỏi liên quan đến chính tiện ích mở rộng MongoDB PHP, bạn có thể vui lòng cung cấp một môi trường Docker tối thiểu không? . e. trừ docker-compose Ngoài ra, hãy xem một ví dụ tại get-started-php/Dockerfile. Tệp này là một phần của dự án get-started-php, sử dụng các vùng chứa như một cách để khởi động môi trường học tập. Xem thêm "Bắt đầu" với chủ đề MongoDB Atlas Dan_BurtTôi đã thử các phiên bản tối thiểu khác nhau, chẳng hạn như 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
- [email protected]
- "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
0 , 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
- [email protected]
- "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
1 và các phiên bản trên
Điều này không liên quan trực tiếp đến sự cố bạn đang gặp phải, mặc dù xin lưu ý rằng phần mở rộng MongoDB PHP phiên bản 1. 9. 1 hiện đã có ( MongoDB PHP Extension 1. 9. 1 Đã phát hành ) |