Điều này sẽ hiển thị cổng. 27017 theo mặc định. Bạn có thể kết nối với phiên bản mongo db này bằng cách cài đặt Robo 3T, một phần mềm để quản lý mongo db
Chạy bộ chứa docker Php
Tôi sẽ chạy bộ chứa php5/apacheChạy
docker run -d -p 8020:80 --name php-apache php:5-apache
Ghi chú. Điều này sẽ chạy một bộ chứa php, nhưng để có thể kết nối với bộ chứa mongo db, bạn cần liên kết bộ chứa này với bộ chứa mongo db
docker run -d -p 8020:80 --link my-mongo --name php-mongo-test php:5-apache
Bây giờ, bạn sẽ có thể thấy hai container đang chạy bằng cách gõ. Lệnh "docker ps"
Cài đặt trình kết nối Mongo Php
Bạn sẽ cần thư viện mongo php để viết mã php kết nối với mongo dbCó hai cách
- Chạy hình ảnh php/apache và cài đặt php-mongo theo cách thủ công
- Viết một Dockerfile tùy chỉnh và chuẩn bị hình ảnh của bạn để cài đặt các phụ thuộc php-mongo
1. Chạy hình ảnh php/apache và cài đặt php-mongo theo cách thủ công
Kiểm tra container id của php container, bằng cách gõ lệnhMở Shell/bash trong vùng chứa đó. [giả sử 9da60559db80 là id vùng chứa của tôi]
docker exec -it 9da60559db80 bash
Bây giờ, bạn đang ở trong shell terminal của php container. Bạn sẽ cần cài đặt các phụ thuộc php-mongo
Chạy các lệnh sau
apt-get update
apt-get install openssl libssl-dev libcurl4-openssl-dev
pecl install mongo
echo "extension=mongo.so" > /usr/local/etc/php/conf.d/mongo.ini
Trong các bước trên, về cơ bản, chúng tôi đã cài đặt một số phụ thuộc cần thiết cho trình kết nối mongodb và cài đặt tiện ích mở rộng mongo db php và bao gồm phần mở rộng đó trong php. danh sách ban đầu
Ghi chú. Bộ chứa Php tải tất cả tệp ini có trong /usr/local/etc/php/conf. thư mục d/
Bây giờ, bạn cần khởi động lại vùng chứa của mình để tải tiện ích mở rộng mongo db
Khởi động lại vùng chứa của bạn
docker stop 9da60559db80
docker start 9da60559db80
2. Chuẩn bị hình ảnh docker, với các bước trên được đưa vào
Đi đến. https. //github. com/GyanBlog/php-mongo-docker và xây dựng hình ảnh của bạn. Bạn sẽ có các bước trên được thực hiện trước. Vui thíchĐể kiểm tra xem bạn đã tải tiện ích mở rộng mongo db chính xác hay chưa. Chuẩn bị một tệp phpfile trong thư mục /var/www/html nói thông tin. php và đặt nội dung sau
Trên trình duyệt của bạn, hãy thử. máy chủ cục bộ. 8082/thông tin. php
Bạn sẽ thấy một trang html lớn hiển thị thông tin php và các tiện ích mở rộng đã cài đặt. Tìm kiếm mongo và nó sẽ hiển thị một số kết quả
Có bất kỳ lợi thế nào của docker-php-ext-install
so với pecl
không? . Tôi tìm thấy câu hỏi này mà không có câu trả lời trong vấn đề
https. //github. com/docker-library/php/issues/374
Nếu pecl chứa tất cả các phần mở rộng, nhưng docker-php-ext-install
cho phép cài đặt danh sách ràng buộc, tại sao nó được tạo?
Bạn có thể tìm thấy lời giải thích trong vấn đề docker-php-ext-install vs pecl trong kho lưu trữ hình ảnh chính thức của php
Khi phát triển một trang web hoặc ứng dụng PHP, bạn phải luôn đảm bảo rằng nó có khả năng xử lý lưu lượng truy cập cao sau khi đi vào sản xuất. Đây là nơi bộ chứa Bitnami PHP-FPM xuất hiện. Nó kết hợp triển khai PHP FastCGI với một số tính năng bổ sung như tạo quy trình thích ứng, hỗ trợ tải lên được tăng tốc hoặc các chức năng để quản lý các tác vụ tốn thời gian. Những cải tiến này làm cho nó trở nên lý tưởng cho các trang web bận rộn
Mặt khác, bạn nên chọn cơ sở dữ liệu có khả năng mở rộng quy mô và cung cấp tính sẵn sàng cao trong các tình huống đòi hỏi khắt khe. Các giải pháp NoSQL như MongoDB đã chứng tỏ là một lựa chọn hiệu quả trong những trường hợp này
Hướng dẫn này hướng dẫn bạn quy trình sử dụng bộ chứa Bitnami Docker PHP-FPM làm hình ảnh cơ sở để xây dựng một hình ảnh mới với tiện ích mở rộng MongoDB đã được cài đặt. Sau khi hình ảnh được tạo, hướng dẫn này sẽ chỉ cho bạn cách chạy vùng chứa để kiểm tra việc cài đặt tiện ích mở rộng MongoDB
Giả định và điều kiện tiên quyếtHướng dẫn này đưa ra các giả định sau
- Bạn có kiến thức cơ bản về Docker container
- Bạn đã cài đặt và định cấu hình môi trường Docker. Tìm hiểu thêm về cài đặt Docker
- Bạn có tài khoản Docker Hub. Đăng ký tài khoản miễn phí. [Không bắt buộc]
Để bắt đầu quá trình, hãy tạo một thư mục làm việc cho mã vùng chứa của bạn trên máy chủ Docker của bạn, như được hiển thị bên dưới
cd ~
mkdir my-custom-php-fpm-container
cd my-custom-php-fpm-container
Bước 2. Tạo một DockerfileDockerfile tương tự như một công thức. nó chứa tất cả các thành phần cần thiết để tạo hình ảnh Docker. Thông thường, mỗi dòng đại diện cho một bước riêng biệt và bắt đầu bằng một từ khóa hướng dẫn theo sau là một loạt đối số. Tìm hiểu thêm về định dạng Dockerfile
Để tạo một hình ảnh PHP-FPM bao gồm mô-đun MongoDB, hãy tạo một tệp có tên Dockerfile và điền vào nội dung sau
FROM bitnami/php-fpm:7.3-prod
RUN apt-get update && apt-get install -y autoconf build-essential
RUN pecl install mongodb
RUN echo "extension=mongodb.so" >> /opt/bitnami/php/etc/php.ini
Chúng ta hãy xem xét kỹ hơn các bước trong giai đoạn xây dựng
Lệnh TỪ khởi động Dockerfile và chỉ định hình ảnh cơ sở sẽ sử dụng. Ví dụ này sử dụng bộ chứa PHP-FPM của Bitnami để sản xuất làm hình ảnh cơ sở. Lệnh RUN thực thi lệnh shell. Trong trường hợp này, bạn có thể tìm thấy ba lệnh cho các hành động sau
- Cập nhật các phụ thuộc và cài đặt gói autoconf
- Cài đặt tiện ích mở rộng MongoDB
- Bao gồm phần mở rộng MongoDB trong php. tập tin ini
Khi Dockerfile được tạo, hãy chạy lệnh docker build để xây dựng hình ảnh
Mẹo
Nếu bạn muốn thêm tài khoản tên người dùng Docker của mình trước tên hình ảnh
docker build -t my-custom-docker-php-fpm:latest .
Đây là một ví dụ về đầu ra mà bạn sẽ thấy trong quá trình xây dựng
Lệnh này tạo một hình ảnh có tên custom-docker-php-fpm, được gắn thẻ là phiên bản mới nhất. Thẻ này xác định duy nhất một hình ảnh Docker, cho phép bạn triển khai một phiên bản cụ thể của ứng dụng nếu cần
Khi quá trình xây dựng hoàn tất, hãy sử dụng lệnh docker images để xác minh rằng hình ảnh đã được thêm vào kho lưu trữ cục bộ của bạn
docker images | grep custom-docker-php-fpm
Bước 4. Chạy hình ảnh DockerChạy hình ảnh Docker mới của bạn trong một thùng chứa để kiểm tra nó bằng lệnh docker run
docker run custom-docker-php-fpm &
Để kiểm tra xem container có đang chạy hay không, hãy thực hiện lệnh docker ps. Bạn sẽ thấy một đầu ra tương tự như thế này
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6250efbcdc87 custom-docker-php-fpm "php-fpm -F --pid /o…" 25 seconds ago Up 23 seconds vigilant_kapitsa
Bước 5. Kiểm tra cài đặt tiện ích mở rộng MongoDBBước cuối cùng là kiểm tra xem tiện ích mở rộng MongoDB đã được cài đặt đúng chưa. Để làm như vậy, cần truy cập vào vùng chứa và chạy một bộ lệnh. Làm theo những chỉ dẫn này
- Truy cập vùng chứa bằng cách chạy docker exec lệnh như được hiển thị bên dưới. Hãy nhớ thay thế trình giữ chỗ CONTAINER_ID bằng id bạn đã nhận được khi chạy lệnh docker ps
docker exec -it CONTAINER_ID bash
- Với câu lệnh trên, bạn sẽ truy cập container với quyền root. Thực hiện thao tác sau để kiểm tra xem tiện ích mở rộng MongoDB có trong vùng chứa của bạn không
php -m | grep mongo
Bạn sẽ thấy "mongodb" là kết quả đầu ra
Mẹo
Để biết thêm thông tin về những mô-đun và tiện ích mở rộng PHP nào được cài đặt trên bộ chứa của bạn, bạn có thể chạy lệnh php -m. Để biết thông tin mở rộng về từng mô-đun như phiên bản, thư mục, môi trường, v.v. , chạy lệnh php -i
Bước 6. Xuất bản hình ảnh Docker [tùy chọn]Giờ đây, hình ảnh Docker của bạn đã được tạo và chứa tất cả các tùy chỉnh, bạn có thể tải nó lên sổ đăng ký công khai. Hướng dẫn này sử dụng Docker Hub, nhưng bạn có thể chọn một trong những lựa chọn của riêng mình, chẳng hạn như