如何使用ansbile&;为nginx构建reactjs文件;然后将这些文件同步到ansible库存?
我有一个ReactJS应用程序,从中我可以为webserver构建资产文件。对于这种方法,我使用Docker容器 正在使用的容器:如何使用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 &&
节点: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