我正在使用 docker容器,我想定期抓取和更新Django模型。
所以我决定执行django命令并由Linux crontab定期运行它。
工作清单
* * * * * . /root/.profile; /usr/local/bin/python3 /code/manage.py crawl_snu >> /var/log/cron.log 2>&1
# crawl_snu is a command name
但是发生错误
Traceback (most recent call last):
File "/code/manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 204, in fetch_command
settings.INSTALLED_APPS
File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 43, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 125, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
SECRET_KEY
在环境变量中,所以我像下面这样使用它
# settings.py
# ...
SECRET_KEY = os.environ.get('SECRET_KEY')
# ...
我试图在执行命令之前通过添加. /root/.profile/
来传递环境变量,但这不起作用。
除了SECRET_KEY
之外,还有许多环境变量,它们是由主机通过docker run --env .env imagename
传递的。
可能是与Docker crontab相关的问题...我如何与crontab共享环境变量,或者有什么更好的解决方案来与docker定期执行django命令?