可以在Docker和开发环境中使用的安全目录

时间:2019-01-27 08:29:08

标签: docker dockerfile

我有一个webapp,无论运行在哪里,都需要存储临时文件。 由于我希望该应用程序既可以在Docker中也可以在开发环境中执行-我需要一个可以在开发环境(通常为Mac OS)和Docker容器中创建的安全目录。

我在容器上使用了/usr/temp,但在Mac上却无法访问此目录。

使用哪种最佳,最安全的目录?

谢谢

3 个答案:

答案 0 :(得分:1)

如果设置了环境变量SELECT timestamp, symbol, open, MAX(high) as high, MIN(low) as low, close FROM ohlc_database WHERE `symbol` LIKE 'AMBUJACEM' GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300, symbol ,则它是临时文件的标准位置;如果未设置,则通常默认为$TMPDIR。 (在MacOS上,它指向每个用户的目录,该目录很快变得混乱不堪。)您没有提到您使用的是哪种语言,但是大多数语言都有特定的功能或模块来“在通常的临时目录中”创建文件。 ,就是这个。

通常,环境变量是封装开发环境与各种部署环境之间差异的好方法,在这里很有意义。

还请记住,一方面,当容器退出时,您没有明确保留的Docker文件系统空间中的所有内容都会丢失;另一方面,如果容器长时间运行,则不会存在任何信息。任何类型的自动/tmp清洁器。您需要正确管理这些文件的生命周期。还应记住,您对容器的文件系统布局具有近乎完全的控制,如果需要某个特定目录,可以在Dockerfile中/tmp对其进行保存。

答案 1 :(得分:0)

Docker提供了卷概念,可帮助您在主机和容器之间同步数据。

以您为例,假设您要将/home/user/data从您的主机同步到Container中的/usr/temp

您可以这样做

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

一旦容器启动并运行

data文件夹中添加一些文件,该文件将在temp文件夹中的容器内以及其他方式可用。

答案 2 :(得分:0)

我最终在Dockerfile中包含以下内容

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

在我的配置文件中,我使用/temp/abc/temp/xyz指向目标文件夹。

最后,在我的应用程序代码中,我确保使用process.env['HOME'](NodeJS)前缀任何路径。

由于在Mac上默认设置了$ HOME,而且在运行上述docker的生产环境中,上述设置在开发环境中均能很好地工作。

谢谢大家!

相关问题