Чтобы увидеть изменения в вашем рабочем каталоге внутри докера, насколько я понимаю на 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
, без использования скрипта).