#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, возможно, мне не хватает некоторых сервисов.