在应得的时候给予赞扬。@IainShelvington在上述评论中优雅地提出了问题和解决方案。
问题原因:“您在docker容器中写入的任何文件都不会写入主机,除非您装入一个卷并写入该卷。”
问题解决方案:“将新卷添加到全局”卷:“在您的compose配置中。将该卷装载到“django”服务中,所有芹菜服务都从该服务继承,因此应该共享。从您装载的位置写入和读取文件(这应该与应用装载完全不同,如“/芹菜日志”或其他内容)”
为了演示这个解决方案在我的具体示例中是什么样子,我在我的产品中添加了以下内容。yml文件:
volumes:
...
production_celery: {}
services:
django: &django
build:
...
image: myapp_production_django
depends_on:
...
volumes:
- production_celery:/app/celerydata:z
env_file:
...
command: /start
然后,从我的芹菜脚本派生的所有数据文件都被发送到名为“celerydata”的新卷/目录并从中提取
正如评论中提到的,我的应用程序以前依赖于APScheduler,我已经习惯于快速将数据文件写入主机,并能够轻松地浏览它们。为了再次在主机上查看这些文件,并作为安全预防措施(数据冗余),我开始使用以下命令序列将文件从celerydata目录复制到本地计算机,在那里我可以通过图形界面轻松查看它们:
docker ps # note container_id == ${CID} below
export CID=foobarbaz123
docker cp ${CID}:/app/celerydata ./celery_storage
在将来的某个时候,我可能会将其写入脚本,在启动容器时运行,并相应地更新答案。