Оказалось, что проблема была в следующем:
Я использовал подход # 1
Эта проблема возникает только в точке инициализации, где NODEJS удаляла папку www
после NGINX поддерживает привязку к нему. Перезапуск контейнера NGINX после того, как NODEJS завершит создание папки и файлов www
, решит проблему, даже если NODEJS впоследствии восстановит веб-файлы (потому что он не удалит всю папку целиком).
Вместо того, чтобы каждый раз перезапускать NGINX вручную, я использовал HealthCheck и контейнер для автоматического заживления. (Обратите внимание, что если вы используете рой, вам не понадобится контейнер для автоматического лечения)
Вот как я это сделал:
Создайте healthcheck.sh
, где Dockerfile:
#!/bin/bash
if [ -z "$(ls -A /path/to/mounted/file/in/NGINX/container)" ]; then exit 1; else exit 0; fi
добавить эти строки в NGINX Dockerfile:
COPY healthcheck.sh .
HEALTHCHECK --interval=3s --retries=10 CMD sh /healthcheck.sh
добавить эти строки в docker -compose.yml:
autoheal:
image: willfarrell/autoheal
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
AUTOHEAL_CONTAINER_LABEL: all
restart: always