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

如何使用Ansible将Jenkins工作区的Docker-compose文件上传至远程主机

Ansible复制Docker Compose文件失败问题解决

核心错误原因

  • copy模块参数使用完全错误:remote_src是布尔类型参数,仅用于指定「源文件是否在远程主机上」,有效值只有yes/no,不能直接填写路径。
    • 你的需求是把Jenkins工作区(Ansible控制端)的文件复制到远程主机,属于默认场景,不需要加remote_src参数,源文件路径用src参数声明即可。
    • 你之前的写法相当于要求Ansible在远程主机的家目录下找docker-compose.yml再复制到同主机的目标路径,远程主机上本来不存在该文件,自然复制失败。
  • 目标路径使用相对路径./opt/ydilo/ydilo-acalls/,实际会对应到远程主机登录用户的家目录下的opt/...路径,如果你需要的是根目录下的/opt路径,需要写绝对路径,同时要确保目标目录提前存在,否则也会触发复制失败。

修正后的剧本示例

---
- hosts: [...].es

  tasks:
  # 先确保目标目录存在
  - name: create target directory
    become: True
    file:
      path: /opt/ydilo/ydilo-acalls/
      state: directory
      mode: '0755'

  - name: copy Docker Compose files
    copy:
      # src填Jenkins工作区中docker-compose.yml的绝对路径,或者相对Ansible剧本执行位置的相对路径
      src: /path/to/your/jenkins/workspace/docker-compose.yml
      dest: /opt/ydilo/ydilo-acalls/
      mode: '0644'

  - name: Run container
    become: True
    shell:
      # 加-d参数让容器后台运行,避免执行阻塞
      cmd: "docker-compose up -d"
      chdir: /opt/ydilo/ydilo-acalls/

额外注意事项

  • 如果Jenkins工作区的docker-compose.yml就在Ansible剧本执行的当前目录下,src可以直接写src: docker-compose.yml
  • 执行前确认远程主机已经安装好docker和docker-compose,且执行用户有docker操作权限,避免启动容器时报错。

内容的提问来源于stack exchange,提问作者Alejandro Sánchez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:18:03