Angular Can';t构建角度距离,如果nginx正在运行(已停靠) 设置

Angular Can';t构建角度距离,如果nginx正在运行(已停靠) 设置,angular,docker,nginx,docker-compose,Angular,Docker,Nginx,Docker Compose,我有两个docker容器在Windows 8.1上运行 包含npm的一个,用于构建角度项目。 另一个包含nginx,服务于dist目录 dist目录位于/var/www/front中,由卷中的两个容器共享 以下是docker compose配置: nginx: build: ./docker/nginx ports: - "80:80" - "8080:8080" environment: APP_ENV: prod

我有两个docker容器在Windows 8.1上运行

包含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 container运行时,并且只有当页面显示在浏览器上时,ng build才会生成角度项目,失败时出现“冲突”错误:


是否有解决此问题的方法?

我认为Windows文件系统会锁定第二个容器使用的文件,这可能会导致您的错误。使用在两个容器之间共享数据可以解决此问题

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个容器读取文件时,文件被锁定在“只读模式”

解决方案是只为输出目录创建一个命名卷,这样就不会与主机路径绑定。这两个容器将读取和写入没有问题的文件


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

也许,但我需要挂载主机路径。/front以更新代码。如何使用命名卷完成此操作?我为您的卷添加了一个示例配置。有关更多信息,请查看我在帖子中链接的文档丰富的docker compose参考。我之前确实尝试配置驱动程序,但出现了路径错误。多亏了你,我做对了。。。但不幸的是,无法解决繁忙文件错误。我想是Windows故障。您可以尝试在nginx容器中装载只读卷。也许这会有帮助。我添加了只读:true,有一致性和无一致性:cached。同样的错误。释放锁定文件的唯一解决方案是重新启动nginx容器。
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: