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

时间:2017-05-17 14:26:09

标签: c++ docker boost gitlab-ci

我正在使用dockers存储我的c ++程序的依赖项,以便在使用gitlab CI进行CI测试时使用。我首先构建一个包含所有程序依赖项的基础docker(让我们称之为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

此泊坞窗不会更改。然后每当我推送到gitlab时,我都会从DOCKER_A开始构建另一个docker:

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

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

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

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中的每个测试都失败了,所有这些都给出了同样的错误。以下是输出的示例:

$ 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图,因为它安装在我继承的第一个docker容器中。

可以提供任何可以提供的帮助。

0 个答案:

没有答案