Я определяю задание Kubernetes для запуска задачи rake, но застрял в том, как написать команду...
Я новичок в K8s и пытаюсь запустить приложение Rails в K8s. В моем приложении Rails Dockerfile я создал пользователя, скопировал код в /home/abc и установил для этого пользователя rvm и rails, а также указал точку входа и команду:
ENTRYPOINT ["/home/abc/docker-entrypoint.sh"]
CMD bash -l -c "cd /home/abc && rvm use 2.2.10 --default && rake db:migrate && exec /usr/bin/supervisord -c config/supervisord.conf"
В docker-entrypoint.sh последняя команда
exec gosu abc "$@"
Цель состоит в том, чтобы в конце перейти к пользователю abc, а затем запустить миграцию базы данных и запустить сервер через supervisord. Это работает, хотя я не знаю, хорошая это практика или нет...
Теперь я хотел бы запустить еще одну задачу rake для какой-то цели. Во-первых, я попытался запустить его с помощью команды kubectl exec:
kubectl exec my-app-deployment-xxxx -- gosu abc bash -l -c 'cd /home/abc && rvm use 2.2.10 --default && rake app:init:test_task'
Это сработало, но для этого требуется знать идентификатор модуля, который является динамическим. поэтому я попытался создать задание K8s и указать в команде:
containers:
- name: my-app
image: my-app:v0.2
command:
- "gosu"
- "abc"
- "bash -l -c 'cd /home/abc && rvm use 2.2.10 --default && rake app:init:test_task'"
Я ожидаю, что задание может быть успешно завершено, но оно не выполнено, и информация об ошибке, когда kubectl регистрирует job_pod, выглядит так:
ошибка: exec: "bash -l -c 'cd /home/abc && rvm use 2.2.10 --default && rake app:init:test_task'": stat bash -l -c cd /home/abc && rvm use 2.2 .10 --default && rake app:init:test_task': нет такого файла или каталога
Я думаю, это должно быть из-за того, как написать часть «команда» для запуска нескольких команд с госу...
Спасибо за вашу помощь!