Синтаксис Dockerfile на самом деле не является JSON, и после [
не может быть разрыва строки. Docker фактически переписывает это на
CMD ["/bin/sh", "-c", "["]
(что на самом деле будет действительным! Возможно, у вас есть /bin/[
двоичный файл! Но контейнер немедленно завершит работу с кодом состояния 0.)
и затем переходит к следующей строке
"PYTHONPATH='.'", "luigi", "--module", "pipe",
, где это путается, потому что на самом деле это не похоже на директиву Dockerfile.
Простое удаление этой новой строки само по себе приведет вас к этому лишь частично. Если вы запускаете
CMD ["PYTHONPATH='.'", "luigi", ...]
Docker не будет запускать оболочку, чтобы попытаться запустить это; вместо этого он будет искать двоичный файл с именем точно PYTHONPATH='.'
в обычных каталогах, а когда он не найдет , например, /usr/bin/PYTHONPATH='.'
, он будет жаловаться.
Вам вообще не нужно устанавливать эту переменную среды (тем более что шаг pip install
установит пакеты в изолированную глобальную установку Python образа), и я бы просто удалил ее:
CMD ["luigi", ...]
Если вам нужно установить его, вам нужно использовать явную директиву ENV
ENV PYTHONPATH .