Невозможно построить угловой дист, если запущен nginx (докеризован) - PullRequest
0 голосов
/ 12 февраля 2019

Настройка

У меня есть 2 док-контейнера, работающих на 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 работает и только когда страница отображается в браузере, ng build не будет создавать угловой проект, что приведет к ошибке «конфликта»:

ETXTBSY: text file is busy, unlink '/var/www/front/dist/assets/image.jpg

Есть ли обходной путь к этомувопрос

1 Ответ

0 голосов
/ 17 февраля 2019

Я думаю, что файловая система 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 контейнера.

Решение состоит в том, чтобы создать именованный том только для выходного каталога, чтобы не было привязки к пути хоста.Эти два контейнера будут считывать и записывать файлы без проблем.

Единственный недостаток заключается в том, что хост-файлы будут труднее получать доступ к выходным файлам.Пример, для целей управления версиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...