Docker构建ClickHouse 21.8.11.4镜像输入密码后卡住如何解决?
问题原因
ClickHouse的deb安装包在安装过程中会触发交互式配置流程,要求输入default用户的密码,而Docker构建过程默认处于非交互模式,无法响应该交互请求,因此会出现构建卡住无响应的问题。
解决方案
修改你的Dockerfile,在安装ClickHouse之前预先配置debconf参数,禁用交互式提示,同时提前设置default用户的密码,修改后的完整Dockerfile如下:
FROM ubuntu:20.04 ENV CH_VERSION 21.8.11.4 # 禁用Debian交互式配置提示 ENV DEBIAN_FRONTEND=noninteractive RUN \ # 预先配置ClickHouse default用户密码,如需自定义密码替换下方YOUR_CUSTOM_PASSWORD即可,设置空密码则留空引号内内容 echo "clickhouse-server clickhouse-server/root_password password YOUR_CUSTOM_PASSWORD" | debconf-set-selections && \ echo "clickhouse-server clickhouse-server/root_password_again password YOUR_CUSTOM_PASSWORD" | debconf-set-selections && \ apt-get update && \ apt-get install --yes --no-install-recommends \ apt-transport-https \ apt-utils \ dirmngr \ gnupg && \ apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 && \ echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | tee /etc/apt/sources.list.d/clickhouse.list && \ apt-get update && \ apt-get install --allow-unauthenticated -y \ clickhouse-client=${CH_VERSION} \ clickhouse-server=${CH_VERSION} \ clickhouse-common-static=${CH_VERSION} \ libgcc-7-dev \ tzdata \ libreadline-dev \ curl && \ rm -rf \ /var/lib/apt/lists/* \ /var/cache/debconf \ /tmp/* && \ apt-get clean VOLUME /var/lib/clickhouse RUN chown -R clickhouse /etc/clickhouse-server USER clickhouse EXPOSE 9000 8123 9009 ENTRYPOINT exec /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
额外优化建议
- 如果你不希望将密码硬编码在Dockerfile中,可以后续在启动容器时挂载自定义的
users.xml配置文件,覆盖默认的用户密码配置,安全性更高。 - 重新执行构建命令
docker build -t clickhouse-server:21.8.11.4 .即可正常完成构建,不会再弹出密码输入提示。
内容的提问来源于stack exchange,提问作者Rishabh Shah
相关产品推荐
相关产品推荐

