Запуск скрипта impala sql из файла Docker

#docker #cloudera #dockerfile #impala

#docker #cloudera #dockerfile #impala

Вопрос:

Я совсем новичок в docker, и я пытаюсь сделать (я думал) довольно простую вещь. Что касается названия, я хотел бы запустить скрипт impala из файла Docker. Здесь мой Dockerfile выглядит так:

 FROM cloudera/quickstart:latest
COPY /home/dodo/script/ /home/cloudera/script
WORKDIR /home/cloudera/script
RUN service impala-state-store start 
    amp;amp; service impala-catalog start 
    amp;amp; service impala-server start 
    amp;amp; impala-shell -f script.sql --quiet -i localhost
 

При создании образа у меня продолжает возникать эта ошибка, связанная с подключением к impala-shell:

Ошибка подключения: TTransportException, не удалось подключиться к localhost: 21000

Я попытался запустить тот же скрипт с той же командой внутри контейнера, и он работает.

Есть ли у вас какие-либо идеи, как я могу решить эту проблему, какой хост передается в impala-shell?

Комментарии:

1. Может быть, вам следует немного подождать, пока порт 21000 прослушивается?

2. Кстати, вы должны заменить свой RUN на ENTRYPOINT

3. @user2915097 Я пытался дождаться порта, но он не работает

4. Конечно, вам нужна ТОЧКА ВХОДА

Ответ №1:

Кажется, вам нужно добавить несколько вещей

Я создал следующий файл Dockerfile

FROM cloudera/quickstart:latest
RUN mkdir /script
COPY service.sh /script
ENTRYPOINT ["/script/service.sh"]

с помощью файловой службы.sh, содержащий

#!/bin/bash
service impala-state-store start
amp;amp; service impala-catalog start
amp;amp; service impala-server start
amp;amp; impala-shell -f script.sql --quiet -i localhost

затем я создаю его

docker build -t impala .

и я запускаю его

docker run impala

это показывает

Started Impala State Store Server (statestored):[ OK ]
Started Impala Catalog Server (catalogd) :[ OK ]
Started Impala Server (impalad):[ OK ]
Starting Impala Shell without Kerberos authentication
Error: [Errno 2] No such file or directory: 'script.sql'

Таким образом, все еще требуется некоторая работа, например, предоставление файла .sql. Вы видите, что точке ВХОДА необходимо запустить команду, которая запускает контейнер `

Комментарии:

1. к сожалению, я не написал свой полный файл Dockerfile, теперь я отредактировал вопрос, но моя проблема не в выполнении файла. Я правильно копирую скрипт в контейнер, устанавливаю WORKDIR в каталог, содержащий скрипт, а затем выполняю команды. Проблема больше в подключении к impala, возможно, мне не хватает некоторых сервисов.