加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

如果nginx正在运行(dockerized),则无法建立角度dist

发布时间:2020-12-13 20:52:26 所属栏目:Nginx 来源:网络整理
导读:设置 我有2个在Windows 8.1上运行的Docker容器 一个包含npm的项目,用于构建一个有角度的项目. 另一个包含nginx,用于dist目录. dist目录位于/ var / www / front中,由卷中的两个容器共享. 这是docker-compose配置: nginx: build: ./docker/nginx ports: - "8

设置

我有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个容器将读写文件而没有问题.

唯一的缺点是主机将更难以访问输出文件.例如,用于版本控制.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读