使用 gitlab runner 在服务内运行配置命令

Hir*_*103 5 elasticsearch gitlab-ci gitlab-ci-runner

我需要为 elasticsearch 服务启用脚本来运行我的 rspec 测试

# config/elasticsearch.yml
script.inline: on
script.indexed: on
Run Code Online (Sandbox Code Playgroud)

我尝试在 docker 容器内按以下方式更改 elasticsearch 配置.gitlab-ci.yml

rspec:
  stage: test
  services:
    - mysql:5.6.42
    - name: elasticsearch:1.6.1
      command: ["echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml", "echo 'script.indexed: on' >> /etc/elasticsearch/elasticsearch.yml", "systemctl restart elasticsearch"]
  ...
Run Code Online (Sandbox Code Playgroud)

但服务容器启动失败

*** WARNING: Service runner-6JNFXPMk-project-9870108-concurrent-0-elasticsearch-1 probably didn't start properly.

Health check error:
ContainerStart: Error response from daemon: Cannot link to a non running container: /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1 AS /runner-6LBTXPMk-project-13870108-concurrent-0-elasticsearch-1-wait-for-service/service (executor_docker.go:1318:0s)

Service container logs:
2018-12-26T11:07:47.604151437Z /docker-entrypoint.sh: line 20: /echo 'script.inline: on' >> /etc/elasticsearch/elasticsearch.yml: No such file or directory

*********
Run Code Online (Sandbox Code Playgroud)

如何在 gitlab CI 上配置 elasticsearch 服务以启用脚本?

Hir*_*103 4

看起来commandunderimage相当于CMDDockerfile 中。与在 Gitlab CI 中使用 docker 镜像一样所说:

\n\n
\n

应该用作container\xe2\x80\x99s 命令的命令或脚本。它将被转换为在 image\xe2\x80\x99s 名称之后传递给 Docker 的参数。语法类似于 Dockerfile\xe2\x80\x99s CMD 指令,其中每个 shell 令牌都是数组中的单独字符串。

\n
\n\n

我设法通过添加继承自的自定义泊坞窗图像来解决我的问题elasticsearch:1.6.1

\n\n
# Dockerfile\nFROM elasticsearch:1.6.1\n\nRUN echo \'script.disable_dynamic: false\' >> /etc/elasticsearch/elasticsearch.yml\nRUN echo \'script.inline: on\' >> /etc/elasticsearch/elasticsearch.yml\nRUN echo \'script.indexed: on\' >> /etc/elasticsearch/elasticsearch.yml\n\nCMD ["elasticsearch"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我构建了这个 docker 镜像并推送到docker hub。现在我用它来生成 elasticsearch 服务,如下所示:

\n\n
# .gitlab-ci.yml\nservices:\n  - hirurg103/elasticsearch-1.6.1-with-scripring-enabled:1.0\n...\n
Run Code Online (Sandbox Code Playgroud)\n