Услуга относится к неопределенному объему
Я хочу обмениваться временными файлами между проектом Django и celery worker (он работает с TemporaryUploadedFiles, поэтому я хочу иметь доступ к этим файлам из celery worker, чтобы управлять ими). Я читал об общих томах, поэтому я попытался включить их в мой файл docker-compose и запустить его, но команда выдала мне такую ошибку:
$ docker compose up --build
service "web" refers to undefined volume shared_web_volume/: invalid compose project
Иногда "web" заменяется на "celery", так что и celery, и django не имеют доступа к этому объему.
Вот мой docker-compose.yml
файл:
volumes:
shared_web_volume:
postgres_data:
services:
db:
image: postgres:12.0-alpine
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./.env
web:
build:
context: ./MoreEnergy
dockerfile: Dockerfile
entrypoint: sh ./entrypoint.sh
command: python manage.py runserver 0.0.0.0:8000
volumes:
- "shared_web_volume/:/MoreEnergy/"
ports:
- 1337:8000
env_file:
- ./.env
depends_on:
- db
celery:
build:
context: ./MoreEnergy
dockerfile: Dockerfile
entrypoint: sh ./entrypoint.sh
command: celery -A MoreEnergy worker --loglevel=info
volumes:
- "shared_web_volume/:/MoreEnergy/"
env_file:
- ./.env
depends_on:
- web
- redis
redis:
image: redis:5-alpine
Что я делаю не так?
Обновление: temp dir - это папка моего проекта (я задал ее переменной FILE_UPLOAD_TEMP_DIR
в файле настроек), поэтому мне не нужно делать еще один том только для общих временных файлов (если нужно, скажите мне).
имя вашего общего тома shared_web_volume
и оно отличается от того, которое вы используете в разделе томов shared_web_volume/
поэтому я предлагаю стереть косую черту, чтобы было так
volumes:
- "shared_web_volume:/MoreEnergy/"
Не забудьте сделать то же самое в контейнере с сельдереем