【问题标题】:Elastic user password is not working for my docker image弹性用户密码不适用于我的 docker 映像
【发布时间】:2020-11-09 13:09:11
【问题描述】:

当我使用 elasticsearch 官方 docker 镜像时,ELASTIC_PASSWORD 环境变量运行良好

docker run -dti -e ELASTIC_PASSWORD=my_own_password  -e discovery.type=single-node elasticsearch:7.8.0

但是,当我构建自己的自定义 docker 映像时,ELASTIC_PASSWORD 不起作用,请您帮我解决这个问题

这是我的 Docker 文件

FROM ubuntu:18.04
ENV \
 REFRESHED_AT=2020-06-20


###############################################################################
#                                INSTALLATION
###############################################################################

### install prerequisites (cURL, gosu, tzdata, JDK for Logstash)

RUN set -x \
 && apt update -qq \
 && apt install -qqy --no-install-recommends ca-certificates curl gosu tzdata openjdk-11-jdk-headless \
 && apt clean \
 && rm -rf /var/lib/apt/lists/* \
 && gosu nobody true \
 && set +x






### set current package version

ARG ELK_VERSION=7.8.0


### install Elasticsearch

# predefine env vars, as you can't define an env var that references another one in the same block
ENV \
 ES_VERSION=${ELK_VERSION} \
 ES_HOME=/opt/elasticsearch

ENV \
 ES_PACKAGE=elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz \
 ES_GID=991 \
 ES_UID=991 \
 ES_PATH_CONF=/etc/elasticsearch \
 ES_PATH_BACKUP=/var/backups \
 KIBANA_VERSION=${ELK_VERSION}

RUN DEBIAN_FRONTEND=noninteractive \
 && mkdir ${ES_HOME} \
 && curl -O https://artifacts.elastic.co/downloads/elasticsearch/${ES_PACKAGE} \
 && tar xzf ${ES_PACKAGE} -C ${ES_HOME} --strip-components=1 \
 && rm -f ${ES_PACKAGE} \
 && groupadd -r elasticsearch -g ${ES_GID} \
 && useradd -r -s /usr/sbin/nologin -M -c "Elasticsearch service user" -u ${ES_UID} -g elasticsearch elasticsearch \
 && mkdir -p /var/log/elasticsearch ${ES_PATH_CONF} ${ES_PATH_CONF}/scripts /var/lib/elasticsearch ${ES_PATH_BACKUP}

【问题讨论】:

  • 为什么不使用或扩展官方镜像?
  • @Adiii 想要构建 docker 镜像 logstash、elasticsearch 和 kibana 单个 docker 镜像。这就是我尝试构建自定义图像的原因
  • 所以扩展弹性搜索图像并安装其余两个
  • 不能这样做,弹性基础映像对我不起作用
  • Docker 旨在为每个容器执行一个进程。您应该使用 docker-compose 并为每个应用程序定义一个容器。当您修改官方图像时,您应该发布您的代码并描述究竟是什么不适合您

标签: docker elasticsearch elastic-stack elk


【解决方案1】:

我认为为了为您自己的容器实现此功能(从命令行设置 ELASTIC_PASSWORD 并且它可以工作),您需要重新配置 Elasticsearch 启动脚本。这不是一项简单的任务。

例如这里是来自官方 docker 镜像的docker-entrypoint.shhttps://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/bin/docker-entrypoint.sh 您可以看到该脚本完成了所有“隐藏”工作,让我们仅通过命令即可运行它。

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 2020-12-16
    • 2017-03-27
    • 2017-12-24
    • 2023-03-15
    • 2022-01-10
    • 1970-01-01
    • 2022-11-02
    • 2020-11-02
    相关资源
    最近更新 更多