Обратите внимание на ошибку ls: cannot access '.'$'\r': No such file or directory
.
Одной из проблем Docker (или любой системы на основе Linux / macOS) в Windows является различие в обработке концов строк.
Windowsзаканчивает строки в возврате каретки и переводе строки \r\n
, в то время как Linux и macOS используют только перевод строки \n
.Это становится проблемой, когда вы пытаетесь создать файл в Windows и запустить его в системе Linux / macOS, потому что эти системы обрабатывают \r
как фрагмент текста, а не как новую строку.
Убедитесь, чтозапускайте dos2unix
в файле сценария всякий раз, когда кто-либо что-либо редактирует в любом редакторе Windows.Даже если файл сценария создается в Git Bash, не забудьте запустить dos2unix
dos2unix import.sh
См. https://willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/
В вашем случае:
FROM mongo:latest
RUN apt-get update && apt-get install -y dos2unix
WORKDIR /tmp
COPY data/shops.json .
COPY import.sh .
RUN dos2unix /import.sh && apt-get --purge remove -y dos2unix
CMD ["/bin/bash", "-c", "source import.sh"]