You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Compose在容器内执行指定多行命令?

解决Docker Compose中执行多行追加命令的问题

你可以通过sh -c配合YAML的块字符串语法来实现多行命令的执行,同时保留原有启动参数。具体修改后的Docker Compose配置如下:

container:
  image: container-image
  command:
    - sh
    - -c
    - |
      # 先执行配置追加命令
      cat <<EOT >> /config.toml
      [[tls.certificates]]
        certFile = "/etc/letsencrypt/live/example.site/fullchain.pem"
        keyFile = "/etc/letsencrypt/live/example.site/privkey.pem"
      EOT
      # 用exec启动容器主进程,替换当前shell进程
      exec container-image --api=true --dashboard=true

关键点说明

  • 使用YAML的|符号可以完整保留多行文本的换行和缩进,不用手动转义特殊字符
  • exec命令的作用是让容器主进程替换当前的shell进程,确保主进程成为容器的PID 1,这样能正常接收docker stop等信号,避免容器无法优雅停止
  • 命令顺序可根据需求调整:如果需要先加载配置再启动服务,就先执行追加命令,再启动主进程

内容的提问来源于stack exchange,提问作者Sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:32:43