如何使用ansbile&;为nginx构建reactjs文件;然后将这些文件同步到ansible库存?

如何使用ansbile&;为nginx构建reactjs文件;然后将这些文件同步到ansible库存?,reactjs,docker,ansible,Reactjs,Docker,Ansible,我有一个ReactJS应用程序,从中我可以为webserver构建资产文件。对于这种方法,我使用Docker容器 正在使用的容器:节点:12 应用程序数据:/App,然后将其装入容器中的/App 所以我可以像这样直接运行docker容器来构建这些js文件 # docker container run -ti --name builder \ -v $PWD/app:/app -w /app node:12-alpine \ sh -c "apk update -qq &&

我有一个ReactJS应用程序,从中我可以为webserver构建资产文件。对于这种方法,我使用Docker容器

正在使用的容器:
节点:12
应用程序数据:
/App
,然后将其装入容器中的
/App

所以我可以像这样直接运行docker容器来构建这些js文件

# docker container run -ti --name builder \
-v $PWD/app:/app -w /app node:12-alpine \
sh -c "apk update -qq && \
apk add git -qq && \
NODE_ENV=development npm install && \
mkdir dist && \
npm run build:staging"
现在我正试图用ansible自动化所有这些,下面是任务

- name: Run Container
  docker_container:
    name: "{{ container }}"
    image: "{{ image }}"
    volumes: "{{ lookup('env', 'PWD') }}/app:/app"
    working_dir: "/app"
    command: "{{ command }}"
    state: present
  delegate_to: localhost

- name: Update Frontend
  synchronize:
    src: "{{ lookup('env', 'PWD') }}/{{ component }}/dist/"
    dest: "/{{ parent }}/{{ component }}"
    archive: no
    compress: yes
    recursive: yes
    delete: yes
下面是命令中使用的一些变量

image: "node:12-alpine"
container: "builder"
command: "docker container exec -ti {{ container }} sh -c builder.sh"
容器运行,但似乎没有运行指定的命令, builder.sh包含用于编译的相同命令

# cat builder.sh
apk update -qq
apk add git -qq
NODE_ENV=development npm install
mkdir dist
npm run build:staging
我是否必须使
builder.sh
可执行或缺少其他内容?
另外,我希望在容器中的构建过程完成后执行
同步
模块。有什么方法可以做到这一点?

将DockerFile用于此部分

# cat builder.sh
apk update -qq
apk add git -qq
NODE_ENV=development npm install
mkdir dist
-名称:运行容器
docker_集装箱:
名称:“{container}}”
图像:{{image}}
卷:“{{lookup('env','PWD')}}}/app:/app”
工作目录:“/app”
A:是的
命令:“npm运行生成:暂存”
国家:开始
委托给:localhost
-名称:更新前端
使同步:
src:{{lookup('env','PWD')}/{{component}}/dist/“
dest:“/{{parent}}/{{component}”
档案:否
妈妈:是的
递归:是的
删除:是

直接使用Node似乎更容易;如果您尚未安装Ansible,可以要求Ansible安装它(使用
apt
brew
操作)。如果确实需要使用
docker\u容器:
,则
命令:
是容器运行的单个进程,它应该是
/builder.sh
;它不是一个
docker exec
@DavidMaze好的它既不是由
/builder.sh
也不是由
sh-c builder.sh