бы каждая реплика знала свой номер
docker-compose.yml
version: '3.8'
services:
vosk_cpu_worker:
#scale: 2
deploy:
mode: replicated
replicas: 3
environment:
- WORKER_ID={{.Task.ID}}
build: vosk_cpu_worker
vosk_cpu_worker.py
print('start', os.environ.get('WORKER_ID', 'unknown'))
# out:
vosk_cpu_worker_3 | start {{.Task.ID}}
vosk_cpu_worker_2 | start {{.Task.ID}}
vosk_cpu_worker_1 | start {{.Task.ID}}
из переменных окружения надо вот так ${козявка}
Это что бы прокинуть одну переменную с хоста во все экземляры. Это я могу, но нужно немного другое. Экземпляров будет 20. deploy: mode: replicated replicas: 20 Каждый будет брать свою очередь в SQL. Нужно что бы каждый экземляр знал свою очередь. Например при исполнении print('start', os.environ.get('WORKER_ID', 'unknown')) Ответ ожидается примерно таким: vosk_cpu_worker_1 | start 0 vosk_cpu_worker_2 | start 1 ...
Придётся делать генератор docker-compose файла, в котором будут перечислены все экземпляры отдельными сервисами🤔
Так только swarm умеет
Вот я подозревал! Благодарю. Буду swarm учить в пн
А надо? Какие масштабы нужны?
Масштабы небольшие. 20 процессов будут конвертить файлы и отправлять их на удаленный сервер, потом складывать данные в скуль Если вымирающий, то есть у меня еще вариант брать id поочередно блокируя файл из volume. Правда застрял на какой то детской проблеме PermissionError: [Errno 13] Permission denied при попытке прочитать файл даже единственным экземпляром. Обычно это лечится - через поспать
А зачем процессам номер своего контейнера?
Лечится через chmod или правильного пользователя в контейнере
chmod уже и на хосте пробовал и в Dockerfile бестолку
Обсуждают сегодня