【问题标题】:Alpine 3.8 Docker image: Enabling SSL on libmongocAlpine 3.8 Docker 映像:在 libmongoc 上启用 SSL
【发布时间】:2020-11-18 07:08:28
【问题描述】:

我目前正在为我的项目构建基础映像。该项目正在使用mongodb。我已经成功创建了图像,但是当我尝试在 libmongoc 上调用与 SSL 相关的端点时出现错误:

The SCRAM_SHA_256 authentication mechanism requires libmongoc built with ENABLE_SSL

以下是关于我的 docker 镜像的一些值得注意的内容:

  • 高山 3.8
  • php 7.2
  • nginx
  • 流明框架 5.6.*

以下是当前存在问题的实现,感谢您的建议:

FROM alpine:3.8

RUN apk update && apk upgrade
RUN apk --no-cache add composer curl gcc git make musl-dev nginx \
    openssl openssl-dev php7 php7-ctype php7-curl php7-dev \
    php7-dom php7-fileinfo php7-fpm php7-gd php7-iconv \
    php7-imagick php7-intl php7-json php7-mbstring php7-mysqli \
    php7-opcache php7-openssl php7-pdo php7-pdo_mysql php7-pear \
    php7-redis php7-simplexml php7-tokenizer php7-xdebug \
    php7-xmlreader php7-xmlwriter php7-zip php7-zlib supervisor tzdata
RUN pecl install mongodb \
    && pecl config-set php_ini /etc/php7/php.ini \
    && echo "extension=mongodb.so" > /etc/php7/conf.d/20_mongodb.ini

除了上面的Dockerfile,我也尝试过基于this article 手动构建mongo-php-driver,但是没有用。当我检查php -i | grep mongo 时,这两个选项仍然显示 SSL 已禁用。请告诉我是否需要包含其他信息。

【问题讨论】:

标签: php mongodb docker alpine


【解决方案1】:

原来的帖子是一年多以前的。但我也被这个错误打败了: The SCRAM_SHA_256 authentication mechanism requires libmongoc built with ENABLE_SSL.

以下解决方案假设您有 mongodb 的 docker-compose 配置。

我的解决方案是首先停止并删除正在实现 mongoDB 的容器...调用该容器 workspace:

堆栈:

  • 最新高山
  • nginx
  • php7.3,
  • Laravel 8.x

用于创建 mongodb 扩展的 Dockerfile 工作

RUN apk add redis gnupg openrc openssl libbsd==0.9.1-r1 && rm -rf /var/cache/apk/*

RUN apk update && apk upgrade &&\
    apk add --no-cache php7-pear php7-dev php7-openssl gcc musl-dev make &&\
    apk add curl-dev openssl openssl-dev &&\
    pecl channel-update pecl.php.net &&\
    pecl install mongodb &&\
    pecl config-set php_ini /etc/php7/php.ini

RUN echo "extension=mongodb.so" >> /etc/php7/php.ini &&\
    php --ri mongodb

构建容器

docker-compose stop workspace && docker-compose rm -f workspace && docker-compose build --no-cache workspace

猛击容器:docker-compose exec workspace bash

验证 MongoDB 实际上是作为 php 模块存在的:

bash-5.0# php -m | grep mongodb
mongodb

验证在 libmongoc 上启用 SSL

enter command: php --ri mongodb

响应是:

bash-5.0# php --ri mongodb

mongodb <<<<<< Response means mongo is enabled.  See more below.

MongoDB support => enabled
MongoDB extension version => 1.12.0
MongoDB extension stability => stable
libbson bundled version => 1.20.0
libmongoc bundled version => 1.20.0
libmongoc SSL => enabled <<<< SSL Enabled fixes the problem.
libmongoc SSL library => OpenSSL
libmongoc crypto => enabled
libmongoc crypto library => libcrypto
libmongoc crypto system profile => disabled
libmongoc SASL => disabled
libmongoc ICU => disabled
libmongoc compression => enabled
libmongoc compression snappy => disabled
libmongoc compression zlib => enabled
libmongoc compression zstd => disabled
libmongocrypt bundled version => 1.3.0
libmongocrypt crypto => enabled
libmongocrypt crypto library => libcrypto

Directive => Local Value => Master Value
mongodb.debug => no value => no value
mongodb.mock_service_id => Off => Off

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2021-04-10
    • 2016-09-08
    相关资源
    最近更新 更多