Я хочу выполнить команду условно в docker-compose
, потому что когда кто-то запускает это приложение в первый раз,
Они должны запустить команду migrate
, чтобы они могли запустить django
приложение правильно
Но если их докер запустил migrate
, нет необходимости снова запускать migrate
Так что это команда, чтобы проверить, что их докер запустил migrate
.
if [[ -z $(python3 zeus/manage.py showmigrations | grep '\[ \]')]]; then
echo 'no need to migrate'
else
echo 'need to migate'
fi
Это мой docker-compose.
version: '3'
services:
db:
image: postgres
web:
command: >
bash -c "if [[ -z $(python3 zeus/manage.py showmigrations | grep '\[ \]')]]; then
echo 'no need to migrate'
else
echo 'need to migate'
fi && python3 zeus/manage.py runserver 0.0.0.0:8000
"
Но ошибка возникает вот так
ERROR: Invalid interpolation format for "build" option in service
"web": "bash -c "if [[ -z $(python3 zeus/manage.py showmigrations | grep '\[ \]')]]; then
echo 'no need to migrate' else echo 'need to migate' fi
&& python3 zeus/manage.py runserver 0.0.0.0:8000""
Есть идеи?
Edit
Это нормально, когда я запускаю скрипт проверки миграции в обычном bash
Я думаю, что docker-compose не может разобрать $(python3 manage.py .....)
part.