Запись файлов в образ Docker Nodejs

Я создаю приложение NodeJS (Express) из образа Node Docker, и мне нужно сгенерировать файлы через приложение. Всякий раз, когда я запускаю приложение за пределами Docker, мой код работает, и файл отображается, как ожидалось, но когда docker-compose up использует его, остальная часть приложения работает нормально, но файлы не записываются. Скрипты также не вызывают ошибок, поэтому я подозреваю, что это больше связано с тем, как Docker управляет файлами в контейнерах.

Я также пробовал две разные реализации своего решения, одна с использованием библиотеки fs, а другая с генерацией файлов с использованием ffmpeg, обе с одинаковыми результатами.

Я попробовал console.info(__dirname), чтобы убедиться, что я тоже ищу в нужном каталоге, но, увы, там не повезло.

Если это поможет, я работаю с образом узла и образом MySQL, используя Docker-Compose для их связывания. Я также использую диспетчер процессов PM2 (рекомендованный в учебном пособии, которому я следил) на случай, если он может предоставить любую другую полезную информацию.

Должен ли я создать какой-то том для Docker для записи файлов, или это так же просто, как добавить определенную библиотеку в мое приложение?

Как узнать, что файлы не записываются? Можете ли вы привести проверяемый пример?

sachav 10.08.2018 12:44

Я запустил приложение и настроил маршруты, которые будут писать простой текстовый файл при пинге. Они работают при запуске приложения через npm run, но не при использовании docker-compose up. Файлы просто не существуют, или, если они есть, они не там, где ожидалось, или где-нибудь на моей машине

GroomedGorilla 10.08.2018 12:47

Когда вы запускаете docker-compose up, вы создаете контейнеры. Каждый контейнер соответствует службе, описанной в вашем файле docker-compose.yml. Файлы будут записаны внутри контейнера Docker.

sachav 10.08.2018 12:52

Файловый ввод-вывод в Docker обычно работает нормально, хотя каждый контейнер имеет собственное изолированное пространство файловой системы, которое уничтожается в конце срока службы каждого контейнера. Вещи, которые общаются в основном через файлы, как правило, труднее запускать в Docker, чем в противном случае, и обычно вы пытаетесь спроектировать контейнер для хранения всего его постоянного состояния «где-то еще», например, базы данных, если можете. У вас есть минимальный воспроизводимый пример, показывающий, что не так?

David Maze 10.08.2018 14:32

@sachav Вот в чем проблема. По сути, это непонимание с моей стороны того, как работают контейнеры Docker. Рада восполнить этот пробел в знаниях. Адаптировал мой код и повторно запустил тесты, распечатывая содержимое файловой структуры контейнера, и файлы там! Если вы обновите свой комментарий до ответа, я помечу его как решенный. Спасибо

GroomedGorilla 10.08.2018 17:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
1 509
0

Другие вопросы по теме