我对码头工作者来说很陌生,我试图(我认为)这是一件非常简单的事情。至于标题,我想从Docker文件运行impala脚本。这里我的Dockerfile看起来像:
FROM cloudera/quickstart:latest
COPY /home/dodo/script/ /home/cloudera/script
WORKDIR /home/cloudera/script
RUN service impala-state-store start \
&& service impala-catalog start \
&& service impala-server start \
&& impala-shell -f script.sql --quiet -i localhost
构建映像我一直有关于impala-shell连接的错误:
连接错误:TTransportException,无法连接到localhost:21000
我尝试在容器内使用相同的命令运行相同的脚本并且它可以正常工作。
你知道我怎么能解决这个问题,哪个主机传递给impala-shell?
答案 0 :(得分:0)
似乎你需要添加一些东西
我创建了以下Dockerfile
FROM cloudera/quickstart:latest
RUN mkdir /script
COPY service.sh /script
ENTRYPOINT ["/script/service.sh"]
包含
的文件service.sh #!/bin/bash
service impala-state-store start \
&& service impala-catalog start \
&& service impala-server start \
&& 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文件。您会看到ENTRYPOINT需要启动启动容器的命令 `