Laravel mongodb docker

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ên

Ngay 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 sau

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

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"
    }
}
1

Cô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 container

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.,

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,

Laravel mongodb docker
Dan_Burt

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ê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"
    }
}
1

Có 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
9

Hy 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

Laravel mongodb docker
Dan_Burt

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 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 )