标签:angular nginx docker docker-compose
设置
我有2个在Windows 8.1上运行的Docker容器
一个包含npm的项目,用于构建一个有角度的项目.
另一个包含nginx,用于dist目录.
dist目录位于/ var / www / front中,由卷中的两个容器共享.
这是docker-compose配置:
nginx:
build: ./docker/nginx
ports:
- "80:80"
- "8080:8080"
environment:
APP_ENV: prod
volumes:
- ./logs/nginx:/var/log/nginx:cached
- ./back:/var/www/back
- ./front:/var/www/front
node:
build: ./docker/node
ports:
- "4200:4200"
volumes:
- ./front:/var/www/front
- /var/www/front/node_modules/
问题
当nginx容器正在运行并且仅当页面显示在浏览器上时,ng build不会构建Angular项目,失败并出现“ conflict”错误:
ETXTBSY: text file is busy, unlink '/var/www/front/dist/assets/image.jpg
有没有解决此问题的方法?
解决方法:
我认为Windows文件系统会锁定第二个容器使用的文件,这可能会导致您的错误.使用named volumes在两个容器之间共享数据可以解决此问题.
nginx:
build: ./docker/nginx
ports:
- "80:80"
- "8080:8080"
environment:
APP_ENV: prod
volumes:
- ./logs/nginx:/var/log/nginx:cached
- ./back:/var/www/back
- ./front:/var/www/front
- dist:/var/www/front/dist
node:
build: ./docker/node
ports:
- "4200:4200"
volumes:
- ./front:/var/www/front
- dist:/var/www/front/dist
- /var/www/front/node_modules/
volumes:
dist:
更新:
此处的问题是front / dist输出目录,该目录在两个容器之间共享,但也与运行Windows的主机共享.由于某些原因,当2个容器读取文件时,文件被锁定为“只读模式”.
解决方案是仅为输出目录创建一个命名卷,以便不与主机路径绑定. 2个容器将读写文件而没有问题.
唯一的缺点是主机将更难以访问输出文件.例如,用于版本控制.
标签:angular,nginx,docker,docker-compose 来源: https://codeday.me/bug/20191211/2106376.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。