docker run и docker run -it не предоставляют одинаковые двоичные файлы - PullRequest
0 голосов
/ 09 января 2020

Я сделал docker для своего проекта, где я использую python и команду nosetests. Моя проблема заключается в следующем: я хочу сделать скрипт, который запускает мои тесты в docker. Поэтому я использовал команду docker run --rm pfp nosetests . в своем скрипте, но получил следующую ошибку: /src/test/resources/test_in_docker.sh: line 38: nosetests: command not found

Мне было любопытно, так:

  • Я вошел в docker сам

с docker run --rm pfp /bin/bash и сделал я whereis nosetests, который возвратил nosetests: /usr/local/bin/nosetests, так что все имеет смысл, тесты носа установлены и доступны. Больше когда я смог запустить свои тесты.

  • Я проверил это, не входя в контейнер

Я сделал docker run --rm pfp printenv && echo --- && ls /usr/local/bin | grep -i nose, который вернул следующее:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=a0bac6123ed1
TERM=xterm
INSTALL_DIR=/install
WORKSPACE=/workspace
DATA=/data
LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64:/usr/lib:/usr/lib64:{LD_LIBRARY_PATH}
PYTHONPATH=:/workspace/pfp/src/main/python
HOME=/root
---
theano-nose

Я знаю, что мой PYTHONPATH довольно странный, но мой PATH должен быть в порядке, так как есть /usr/local/bin.

Но по некоторым причинам, которые я не могу выяснить бинарные тесты носа больше не доступны, когда я не иду внутрь docker, чтобы запустить мою команду.

Может кто-нибудь дать мне ответ?

==== РЕДАКТИРОВАТЬ === = Ниже файла docker. Пакет папок находится на компьютере и содержит некоторый установочный скрипт, чтобы сделать файл Docker более читабельным.

FROM centos:7

# Set the install dir
ENV INSTALL_DIR=/install
RUN mkdir -p $INSTALL_DIR/package/

# Location of project and data
ENV WORKSPACE=/workspace
RUN mkdir $WORKSPACE
ENV DATA=/data
RUN mkdir $DATA


# Import package to do install
ADD ./package/ $INSTALL_DIR/package/

# Add basic tools
RUN yum install -y vim mlocate

# Set LD_LIBRARY_PATH for c++
ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64:/usr/lib:/usr/lib64:{LD_LIBRARY_PATH}
# # Install gcc5.5 to get cpp 14 with new ABI
RUN yum -y install make
RUN $INSTALL_DIR/package/centos7/gcc7.4/install.sh -i $INSTALL_DIR/gcc7.4
RUN export PATH=$INSTALL_DIR/gcc7.4/bin:$INSTALL_DIR/gcc7.4/lib:$INSTALL_DIR/gcc7.4/lib64:$INSTALL_DIR/gcc7.4/include:${PATH}&& $INSTALL_DIR/package/centos7/gcc5.5/install.sh
RUN rm -rf $INSTALL_DIR/gcc7.4

# We want to work with cmake3
RUN yum -y install epel-release
RUN yum -y install cmake3
RUN ln -s /usr/bin/cmake3 /usr/bin/cmake

#Install bfm dependencies
RUN $INSTALL_DIR/package/centos7/proj6.2/install.sh
RUN $INSTALL_DIR/package/centos7/gdal3.0/install.sh

# This will install python 3.6
RUN yum -y install python3 python3-devel
RUN ln -s /usr/bin/pip3 /usr/bin/pip

RUN $INSTALL_DIR/package/centos7/pfp/install.sh

RUN rm -rf $INSTALL_DIR/package/*

# To make source code importable in test
ENV PYTHONPATH=$PYTHONPATH:$WORKSPACE/pfp/src/main/python

# Command will be launch from this location
WORKDIR $WORKSPACE/pfp/src/main/python/
...