Docker точка входа не работает должным образом - PullRequest
0 голосов
/ 23 января 2019

У меня есть контейнер Docker, который выполняет скрипт bash как ENTRYPOINT.Этот сценарий выполняет множество задач, основанных на настройке переменных среды.

Самое странное происходит, когда я запускаю контейнер, выполняется сценарий точки входа, и из-за отсутствия более подходящих слов он в конечном итоге дает сбой.

Теперь, если я ввожу контейнер вручную $ docker exec -it <id> bash Затем вручную запускаю тот же сценарий, он работает!

Что здесь происходит?Почему Docker, выполняющий сценарий, отличается от меня, выполняющего сценарий вручную?

ОБНОВЛЕНИЕ для большего контекста

Dockerfile

FROM cuda:torch:cudnn # Not real source, but these are what are in play

# setup lua and python

COPY . /app
WORKDIR /app
ENTRYPOINT ["./entrypoint.py"]
CMD ["start"]

точка входа.py

class DoSomething:

    def methods_that_work(self):
        ...    

    def run_torch(self):
        """
        I do NOT work if called from the Dockerfiles ENTRYPOINT
        I DO work if I manually run ./entrypoint.py start from within the container
        cmd = ['th', ...]
        subprocess.run(cmd)

Факел и Луа должны знать, где находятся CUDA и CudNN.Я могу подтвердить, что все переменные ENV установлены.При запуске через Docker ENTRYPOINT факел просто зависает, никаких ошибок, ничего, просто зависает.

Когда я захожу в контейнер и запускаю вручную ./entrypoint.py, он работает.

1 Ответ

0 голосов
/ 24 января 2019

Для тех, кто сталкивается с этой ситуацией.Это было явной проблемой с Lua.

Пути Lua должны быть обозначены ;, а не :, как, например, $PATH.

$LUA_PATH=/some/path;/some/other/path

Теперь, почему это работает в интерактивной оболочке bash, а не через Docker?Ну а внутри .bashrc была функция «активировать факел», которая, по сути, выполняла поиск и замену на : на ;.

В конце концов, это не проблема Docker, нопросто неправильно отформатированные переменные окружения Lua.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...