Ваши volumes:
вызывают проблемы. Тома Docker не предназначены для хранения кода, и вы должны удалить объявления томов, в которых упоминается backend_app:
.
Ваш файл docker-compose.yml
частично содержит:
volumes:
backend_app:
services:
web:
volumes:
- backend_app:/code
backend_app
является именованным томом : он хранит данные, которые должны быть сохранены во время выполнения контейнера. Если том еще не существует в первый раз, данные будут скопированы в него из образа, но после этого Docker считает, что он содержит важные пользовательские данные, которые не должны обновляться.
Еслиесли вы храните код или библиотеки в томе Docker, Docker никогда не обновит его, даже если базовый образ изменится. Это распространенная проблема в приложениях JavaScript, которые монтируют анонимный том в свой каталог node_modules
.
В качестве временного обходного пути, если вы docker-compose down -v
, он удалит все тома, включая тот, в котором содержится ваш код, и при следующем запуске он будет воссоздан из образа.
Лучшее решение - просто не использовать объем здесь вообще. Удалите строки выше из вашего docker-compose.yml
файла. Разрабатывайте и тестируйте свое приложение в среде, отличной от Docker, и когда вы будете готовы провести интеграционное тестирование, запустите docker-compose up --build
. Ваш код будет жить на изображении, и обычный docker build
создаст новое изображение с новым кодом.