Назад | Перейти на главную страницу

Docker создает ошибку при монтировании томов

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

в настоящее время у меня есть это

web:
  build: .
  ports:
   - "8080:8080"
  volumes:
   - .:/data/app

Поэтому я сопоставляю каталог своей машины . в контейнер на data/app папка, но если я сделаю это, я получаю эту ошибку:

ERROR: for web  Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"bin/develop.sh\": stat bin/develop.sh: no such file or directory"
ERROR: Encountered errors while bringing up the project.

Если я не установлю volumes тег, контейнер действительно загружается, и все, кроме любых изменений, которые я внес в каталог, не переносятся в контейнер.

web:
  build: .
  ports:
   - "8080:8080"

НОТА: та же самая конфигурация работает на компьютерах моих коллег, сервере и даже на моем Mac, единственная из которых вызывает проблемы с volumes это моя машина с Ubuntu, и я не понимаю, почему.

Версии Docker, работающие на Ubuntu 16.10:

Docker version 17.04.0-ce, build 4845c56
docker-compose version 1.11.2, build dfed245

ОБНОВИТЬ

для CMD у меня есть это ./bin/start.sh который содержит

#!/usr/bin/env bash
/usr/bin/supervisord -c ./config/supervisord.conf

В файле Docker у меня это

ENV APP_DIR /data/app/
WORKDIR $APP_DIR

А рабочий каталог внутри контейнера: /data/app.

Вы, вероятно, захотите заменить . с полным путем, который вы хотите установить в свой контейнер.

Также может быть стоит создать образ с вашим стартовым скриптом, включенным в ваше изображение (или, если ваш скрипт останется таким же, как вы показываете в своем вопросе, просто запустите supervisord как ваш CMD, без использования скрипта).