Флаг restart в docker-compose
На сервере развёрнут бэк на FastAPI. В compose файле docker'а прописаны следующие флаги
version: '3'
services:
project:
build: .
restart: always
network_mode: host
command: >
bash -c "uvicorn main:app"
volumes:
- /home/some_dir:/app
Правильно ли я понимаю, что при перезаписи main файла, весь проект сам автоматически перезапуститься?
Ответы (1 шт):
Нет, не перезапустится.
Параметр
restart: always
означает, что docker-compose перезапустит контейнер, если тот вдруг остановится (например, программа закончит выполнение штатно или аварийно). Эта опция нужна именно для перезапуска, если вдруг произойдет сбой, а не для развертывания новой версии.
Важно также понимать, что когда программа завершиться по какой-либо причине, то restart: always не заставит docker-compose заново делать build, т.е. не будет создаваться новый докер образ, а будет использован существующий. Если исходники приложения попадают в контейнер при сборке образа докер, то в этом случае будет использован старый образ, до изменения. Если же исходники попадают через volume, то изменения сделанные в них подхватятся.
Если же программа выполняется и не останавливается, то подмена файла ничего не даст.