使用Ansible Playbook在docker容器中运行mvn clean install

时间:2018-08-26 11:55:39

标签: maven docker ansible

我正在尝试在docker容器中运行mvn clean install命令。但是似乎没有任何反应,因为我已经将容器映射到一个卷并且没有创建目标文件夹。这是剧本。抱歉,这是一个愚蠢的问题,但是我在这里呆了一段时间很沮丧。

---
- name: Building project
  hosts: all
  become: true
  become_user: root
  tasks:
     - name: install docker mvn
       docker_container:
          name: maven_build_direct
          image: maven
          volumes:
            - /home/user/Desktop/Training/docker/maven_task/happy/GsaJavaExample/:/proj
          command: cd /proj
          command: mvn clean install

我还尝试了从docker-container模块外部运行命令,但是由于容器已经停止,因此会出现错误。像这样

     - name: copy content in container to some other folder
       command: docker exec -i maven_build_direct bash -c 'echo "Hello1"; echo "Hello2"'

以上错误是

  

致命:[localhost]:失败! => {“ changed”:true,“ cmd”:[“ docker”,“ exec”,“ -i”,“ maven_build_direct”,“ bash”,“ -c”,“ echo \” Hello1 \“; echo \ “” Hello2 \“”]“,” delta“:” 0:00:00.212534“,” end“:” 2018-08-26 17:07:06.995110“,” msg“:”非零返回码“,” rc “:126,”开始“:” 2018-08-26 17:07:06.782576“,” stderr“:”“,” stderr_lines“:[],” stdout“:” OCI运行时exec失败:exec失败:无法执行已停止的容器:未知”,“ stdout_lines”:[“ OCI运行时exec失败:exec失败:无法执行已停止的容器:未知”]}

1 个答案:

答案 0 :(得分:1)

正如注释中指出的那样,第一个问题是您要指定多个命令属性,这将不起作用。正确的方法是这样设置workdir属性:

      ...
      volumes:
        - /home/user/Desktop/Training/docker/maven_task/happy/GsaJavaExample/:/proj
      working_dir: /proj
      command: mvn clean install
      ...