Я создал док-контейнер для поддержки Elasticsearch.Elasticsearch запускается и управляется супервизором, который также установлен на моем док-контейнере.Я создал скрипт entrypoint.sh и добавил в конец моего Dockerfile следующее:
ENTRYPOINT ["/usr/local/startup/entrypoint.sh"]
Мой скрипт entrypoint.sh выглядит следующим образом:
#!/bin/bash -x
# Start Supervisor if not already running
if ! ps aux | grep -q "[s]upervisor"; then
echo "Starting supervisor service"
exec/usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
else
echo "Supervisor is currently running"
fi
echo "creating /.es_created"
touch /.es_created
exec "$@"
Когда я запускаю докерКонтроллер контейнера запускается и, в свою очередь, успешно запускает эластичный поиск.Проблема в том, что он никогда не выполняет последний бит скрипта, создающего файл .es_created.Кажется, как только команда
exec /usr/bin/supervisord -nc /etc/supervisor/supervisord.conf
выполняется, она просто останавливается там.Я добавил -x в #! / Bin / bash, чтобы я мог вызывать журналы докера для контейнера, и это подтверждает, что он никогда не вызывает последние команды echo и touch.Я чувствую, что, возможно, чего-то не хватает в сценариях точки входа, именно поэтому это происходит, но в конечном итоге я хочу иметь возможность выполнять некоторые команды после запуска эластичного поиска, чтобы я мог настроить правильный индекс и вставить некоторые данные.