如何使用 Ansbile 为 nginx 构建 ReactJS 文件,然后将这些文件重新同步到 Ansible 库存?



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

使用中的容器:node:12-alpine应用程序数据:./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可执行还是缺少其他内容?此外,我希望synchronize模块在容器中完成构建过程后执行。做这件事的方法是什么?

将DockerFile与这些部分一起使用。

# cat builder.sh
apk update -qq
apk add git -qq
NODE_ENV=development npm install
mkdir dist
- name: Run Container
docker_container:
name: "{{ container }}"
image: "{{ image }}"
volumes: "{{ lookup('env', 'PWD') }}/app:/app"
working_dir: "/app"
recreate: yes
command: "npm run build:staging"
state: started
delegate_to: localhost
- name: Update Frontend
synchronize:
src: "{{ lookup('env', 'PWD') }}/{{ component }}/dist/"
dest: "/{{ parent }}/{{ component }}"
archive: no
compress: yes
recursive: yes
delete: yes

最新更新