【发布时间】:2019-12-11 04:13:31
【问题描述】:
我正在制作一个 dockerfile 来安装 elasticsearch:6.5.4 并将一些文件添加到所需位置并运行名为 test.sh 的脚本以在 elasticsearch 运行时在 elasticsearch 中创建新索引。
我不确定是否应该使用 RUN、CMD 或 ENTRYPOINT 来执行此操作。
通过注释我的最后一行(包含 RUN/CMD/ENTRYPOINT test.sh),我已经成功构建了一个映像并运行了一个容器。我能够从容器的 bash 运行 test.sh 并获得所需的结果。
但是当我尝试为同一进程构建映像时,我收到以下错误:
$ docker build -t es .
Sending build context to Docker daemon 7.499MB
Step 1/8 : FROM elasticsearch:6.5.4
---> 93109ce1d590
Step 2/8 : WORKDIR /app
---> Running in 6b6412093d53
Removing intermediate container 6b6412093d53
---> a374ab69eb1a
Step 3/8 : ADD . /app
---> 6ed98ee7ad49
Step 4/8 : COPY test.sh .
---> 42184ec64c09
Step 5/8 : ADD analysis /usr/share/elasticsearch/config/analysis
---> 5a96f2098dd7
Step 6/8 : EXPOSE 9202
---> Running in 6c44b54dcc77
Removing intermediate container 6c44b54dcc77
---> d8723189c843
Step 7/8 : EXPOSE 9200
---> Running in c571b4cba1fa
Removing intermediate container c571b4cba1fa
---> 8fa11b03051e
Step 8/8 : RUN "sh test.sh"
---> Running in cf2e8cb3fd37
/bin/sh: sh test.sh: command not found
The command '/bin/sh -c "sh test.sh"' returned a non-zero code: 127
我已经为第 8 步尝试了不同的 RUN、CMD 和 ENTRYPOINT 组合
我的dockerfile如下:
FROM elasticsearch:6.5.4
WORKDIR /app
ADD . /app
COPY test.sh .
ADD analysis /usr/share/elasticsearch/config/analysis
EXPOSE 9202
EXPOSE 9200
RUN "sh test.sh"
我想在容器中运行 elasticsearch 并为 elasticsearch 创建一个新索引
【问题讨论】:
标签: bash docker elasticsearch dockerfile