程序找不到在Docker中安装的Boost Graph

我使用docker来存储我的c ++程序的依赖关系,以便在使用gitlab CI进行CItesting时使用。 我首先构build一个包含所有程序依赖关系的DOCKER_A (让我们称之为DOCKER_A ):

 FROM gcc:5 RUN mkdir -p /usr/src/optimization WORKDIR /usr/optimization #COPY . /usr/optimization RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y build-essential && \ apt-get install -y openssh-client && \ apt-get install -y python3 && \ apt-get install -y python3-pip && \ pip3 install --upgrade pip && \ pip3 install virtualenv RUN wget http://www.cmake.org/files/v3.7/cmake-3.7.2.tar.gz && \ tar xf cmake-3.7.2.tar.gz && \ cd cmake-3.7.2/ && \ ./configure && \ make && \ make install && \ export PATH=/usr/local/bin:$PATH && \ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH && \ cd .. RUN wget -O boost_1_64_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.64.0/boost_1_64_0.tar.gz/download && \ tar xzvf boost_1_64_0.tar.gz && \ cd boost_1_64_0 && \ ./bootstrap.sh --exec-prefix=/usr/local --with-python=python3 && \ ./b2 threading=multi && \ ./b2 install threading=multi && \ cd .. && \ rm boost_1_64_0.tar.gz && \ rm -r boost_1_64_0 && \ ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py34.so /usr/lib/x86_64-linux-gnu/libboost_python3.so 

这个docker不会改变。 然后每次我推到gitlab,我build立另一个docker,从DOCKER_A开始:

 FROM DOCKER_A ARG SSH_PRIVATE_KEY WORKDIR /usr/optimization COPY . /usr/optimization RUN chmod +x ADD_KEY.sh RUN ./ADD_KEY.sh "$SSH_PRIVATE_KEY" RUN mkdir build && \ cd build && \ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=on .. && \ make && \ cd .. 

这从新的提交构build代码(到目前为止,一切都按预期工作)。

接下来,在我的gitlab CI的YAML文件中,运行我的testing,其中包括调用我的构build过程生成的可执行文件。

 before_script: - docker info - docker login -u user -p $CI_JOB_TOKEN docker.registry.url after_script: - echo "After script section" - echo "For example you might do some cleanup here" buildRelease: stage: build script: - echo "Do your build here" - docker login -u user -p $CI_JOB_TOKEN docker.registry.url - docker build --pull -i $CONTAINER_IMAGE_PUSH --build-arg SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY" . - docker push $CONTAINER_IMAGE_PUSH testDispatch: stage: test script: - echo "Do a test here" - echo "For example run a test suite" - docker run -t $CONTAINER_IMAGE_PULL ./bin/dispatch testState: stage: test script: - docker run -t $CONTAINER_IMAGE_PULL ./bin/state-test testAlgorithm: stage: test script: - docker run -t $CONTAINER_IMAGE_PULL ./bin/algorithm-test testSystem: stage: test script: - docker run -t $CONTAINER_IMAGE_PULL ./bin/system-test 

这些stage test每个stage test失败了,都给出了相同的错误。 这是一个输出的例子:

 $ docker run -t $CONTAINER_IMAGE_PULL ./bin/algorithm-test ./bin/algorithm-test: error while loading shared libraries: libboost_graph.so.1.64.0: cannot open shared object file: No such file or directory 

我不明白为什么我的二进制文件找不到libboost图,因为它安装在我inheritance的第一个docker容器中。

任何可以提供的帮助将不胜感激。

Interesting Posts