docker-compose 为一个服务运行多个命令

use*_*850 4 docker

我在 Windows 上使用 docker - 版本18.03(客户端)/ 18.05(服务器)。我已经docker-compose为 ELK 堆栈创建了文件。一切正常。我想做的是,logtrail在 kibana 启动之前安装。我想logtrail*.zip先复制,然后调用安装:

container_name: kibana
(...)
command:
  - docker cp kibana:/ ./kibana/logtrail/logtrail-6.7.1-0.1.31.zip
  - /bin/bash
  - ./bin/kibana-plugin install/logtrail-6.7.1-0.1.31.zip
Run Code Online (Sandbox Code Playgroud)

但这看起来不像是正确的方式,因为首先它不起作用,其次我不确定我是否可以像我一样调用多个命令,第三我不确定是否允许docker cpincommand服务创建的那个阶段

小智 6

您可以通过以下方式为 docker compose 中的服务运行多个命令:

command: sh -c "command1 && command2 && command2"
Run Code Online (Sandbox Code Playgroud)


Roo*_*t G 5

command:
- /bin/bash
- -c
- |
  echo "This is a multiline command"
  echo "See how I escape $$ sign"
  echo $$PATH
Run Code Online (Sandbox Code Playgroud)

您可以像上面一样运行多个命令,但是不能docker cp像在命令中那样运行。


loy*_*own -1

如果您正在寻找安装软件 David Maze 的评论似乎是标准路径。如果你想实际运行多个命令,请查看此问题的答案Using Docker-Compose, how to执行多个命令