Безопасный каталог, который можно использовать в Docker и среде разработки - PullRequest
0 голосов
/ 27 января 2019

У меня есть веб-приложение, которое должно хранить временные файлы, где бы оно ни работало.Поскольку я хочу, чтобы приложение выполнялось как в Docker, так и в среде разработки - мне нужен безопасный каталог, который можно создать в среде разработки (обычно Mac OS) и в контейнере Docker.

Я использовал /usr/temp на контейнере, но на Mac этот каталог недоступен.

Какой самый лучший и безопасный каталог для использования?

Спасибо

Ответы [ 3 ]

0 голосов
/ 27 января 2019

Если установлена ​​переменная среды $TMPDIR, это стандартное место для временных файлов, а если она не задана, по умолчанию обычно используется значение /tmp.(В MacOS он указывает на каталог для пользователя, который быстро заполняется беспорядком.) Вы не упоминаете, какой язык вы используете, но у большинства есть специальная функция или модуль для создания файла «в обычном временном каталоге»., вот этот.

В общем случае переменные среды - хороший способ инкапсулировать различия между вашей разработкой и различными средами развертывания, и здесь это имеет смысл.

Также помните, с одной стороны,что что-либо в пространстве файловой системы Docker, которое вы не сохраняете явно, будет потеряно при выходе из контейнера, а с другой стороны, если контейнер продолжает работать в течение длительного времени, не существует какого-либо автоматизированного очистителя /tmp.Вам нужно будет правильно управлять жизненным циклом этих файлов.Также помните, что у вас есть почти полный контроль над макетом файловой системы контейнера, и если вам нужен какой-то конкретный каталог, вы можете RUN mkdir указать его в своем Dockerfile.

0 голосов
/ 28 января 2019

В результате в моем Dockerfile появилось следующее:

ENV HOME /usr
WORKDIR $HOME/app
RUN mkdir -p $HOME/temp/abc \
             $HOME/temp/xyz

И в моих файлах конфигурации я использовал /temp/abc или /temp/xyz для указания на папки назначения.

НаконецВ своем коде приложения я обязательно добавлял любое разрешение пути с помощью process.env['HOME'] (NodeJS).

Вышеприведенное хорошо работает как в среде разработки, так как $ HOME устанавливается по умолчанию на Mac, а также впроизводство, которое запускает докер выше.

Спасибо всем!

0 голосов
/ 27 января 2019

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

В вашем случае, допустим, вы хотите синхронизировать /home/user/data с вашего хоста до /usr/temp в контейнере

вы можете сделать это так

docker run -itd -v /home/user/data:/usr/temp --name mycontainer imagename

Как только контейнер запущен и работает

Добавьте некоторый файл в папку data, и он будет доступен внутри контейнера в папке temp и наоборот.

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