【问题标题】:docker-compose run multiple commands for a servicedocker-compose 为一个服务运行多个命令
【发布时间】:2019-04-19 20:28:04
【问题描述】:

我在 Windows 上使用 docker - 版本 18.03(客户端)/18.05(服务器)。我为 ELK 堆栈创建了 docker-compose 文件。一切正常。我想做的是,在 kibana 启动之前安装logtrail。我在考虑先复制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

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

【问题讨论】:

  • 如果你需要在一些基础镜像上安装软件,通常你想创建一个自定义镜像。

标签: docker


【解决方案1】:
command:
- /bin/bash
- -c
- |
  echo "This is a multiline command"
  echo "See how I escape $$ sign"
  echo $$PATH

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

【讨论】:

    【解决方案2】:

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

    command: sh -c "command1 && command2 && command2"
    

    【讨论】:

      【解决方案3】:

      这是我对这种情况的解决方案:

      #    OPTION 01:
      #    command: >
      #      bash -c "chmod +x /scripts/rs-init.sh
      #      && sh /scripts/rs-init.sh"
      #    OPTION 02:
      #    entrypoint: [ "bash", "-c", "chmod +x /scripts/rs-init.sh && sh /scripts/rs-init.sh"]
      
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          • 2020-01-09
          相关资源
          最近更新 更多