После окончания ENTRYPOINT контейнер определенно завершается.
Похоже, вы говорите, что вам нужен контейнер, который сначала выполняет какой-то тест, а затем запускает интерактивную оболочку.Вам нужно создать сценарий оболочки, который делает это
#!/bin/sh
pytest -v
sh
, а затем сделать этот сценарий основным процессом изображения.
У меня есть два комментария стиля, которые читаютдругие комментарии также могут иметь значение для вас.Вы упоминаете, что пытались запустить интерактивную оболочку с
docker run -it vip_app:v0.1 /bin/bash
Если вы объявите команду процесса с CMD, ваша команда /bin/bash
заменит CMD, и вы получите интерактивную оболочку.Если вы объявляете это с помощью ENTRYPOINT, /bin/bash
передается в качестве аргумента ENTRYPOINT (и, вероятно, полностью игнорируется).Я предпочитаю предпочитать CMD ENTRYPOINT, если мне явно не нужны оба.
Вы также пытаетесь изменить команду python
по умолчанию, используя файл .bashrc
..bashrc
не читается во многих распространенных случаях.Например, если вы
docker run --rm vip_app:v0.1 python myapp.py
, .bashrc
не будут прочитаны, и вы запустите /usr/bin/python
(что, вероятно, Python 2.7).Я просто не стал бы устанавливать такие «удобные» вещи в образе вообще.