我有一个webapp,无论运行在哪里,都需要存储临时文件。 由于我希望该应用程序既可以在Docker中也可以在开发环境中执行-我需要一个可以在开发环境(通常为Mac OS)和Docker容器中创建的安全目录。
我在容器上使用了/usr/temp
,但在Mac上却无法访问此目录。
使用哪种最佳,最安全的目录?
谢谢
答案 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的生产环境中,上述设置在开发环境中均能很好地工作。
谢谢大家!