在Docker中安装Mongo c和c ++驱动程序

时间:2017-09-18 15:36:47

标签: docker mongo-cxx-driver mongo-c-driver

我正在尝试在Docker容器中安装mongocxx驱动程序,第一步是使用包管理器安装mongo-c驱动程序。我瘦下来的Dockerfile:

FROM phusion/baseimage:latest
RUN apt-get install -y libmongoc-1.0-0

完成此步骤后,我应该按照此处的说明准备安装cxx驱动程序:https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/

RUN git clone https://github.com/mongodb/mongo-cxx-driver.git  --branch releases/stable --depth 1
WORKDIR /mongo-cxx-driver/build
RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
RUN make EP_mnmlstc_core
RUN make && make install

这一直持续到cmake步骤失败,无法找到libbson包

Step 17/25 : RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
 ---> Running in ba6033b680bb
-- The CXX compiler identification is GNU 5.4.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The C compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Checking for module 'libbson-1.0>=1.5.0'
--   
CMake Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:367 (message):
  A required package was not found

如果我尝试使用pkg-config搜索libmongoc-1.0和libbson-1.0软件包,那就好像没有从mongo-c驱动程序安装任何东西。

Step 17/26 : RUN pkg-config --cflags --libs libmongoc-1.0 libbson-1.0
 ---> Running in 343f3b4feb3b
Package libmongoc-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libmongoc-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libmongoc-1.0' found
Package libbson-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libbson-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libbson-1.0' found

有没有人有在Docker实例中安装的经验?对这里出了什么问题的任何见解?

2 个答案:

答案 0 :(得分:2)

下面适用于构建我的泊坞窗图像。

FROM ubuntu:16.04
RUN apt-get -y update \
    && apt-get -y upgrade

RUN apt-get install -y \
    openssh-server \
    g++ \
    cmake \
    git 

#installing the mongoc dependencies and driver
RUN apt-get install -y \
    pkg-config \
    libssl-dev \
    libsasl2-dev

RUN cd ~ \
    && wget https://github.com/mongodb/mongo-c-driver/releases/download/1.6.2/mongo-c-driver-1.6.2.tar.gz \
    && tar xzf mongo-c-driver-1.6.2.tar.gz \
    && cd mongo-c-driver-1.6.2 \
    && ./configure --disable-automatic-init-and-cleanup \
    && make \
    && make install \
    && cd ~ \
    && rm mongo-c-driver-1.6.2.tar.gz \
    && rm -rf mongo-c-driver-1.6.2

#installing mongocxx driver - connects c++ to mongo
RUN cd ~ \
    && wget https://github.com/mongodb/mongo-cxx-driver/archive/r3.1.1.tar.gz \
    && tar -xzf r3.1.1.tar.gz \
    && cd mongo-cxx-driver-r3.1.1/build \
    && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local .. \
    && make EP_mnmlstc_core \
    && make \
    && make install \
    && cd ~ \
    && rm r3.1.1.tar.gz \
    && rm -rf mongo-cxx-driver-r3.1.1

答案 1 :(得分:0)

在我写完评论后,我想我发现了你程序中的错误。您正在安装“运行时”包,而不是开发包。尝试安装libmongoc-dev和libbson-dev。那些应该提供所需的头文件和SONAME符号链接,以便您可以构建C ++驱动程序。