Kri*_*ass 9 python django amazon-web-services docker
我在Docker中运行了一个Django服务,我将其部署到AWS Elastic Beanstalk.
我想在部署时运行数据库迁移
如果我将EB部署为"Python项目",我可以在我的内容中使用以下内容.ebextensions:
$ cat .ebextensions/01run.config
container_commands:
01migrate:
command: "python manage.py migrate --noinput"
leader_only: true
Run Code Online (Sandbox Code Playgroud)
但是,container_commands对于EC2实例 - 它在Docker容器中,我有我的代码等.
我不能只将它添加到我的Dockerfile,因为应用迁移是关于在附加的RDS实例(由环境提供)上操作 - 不是真正"构建Docker镜像的一部分"
似乎没有任何有用的东西我可以添加 Dockerrun.aws.json
我或许可以在我的内部识别Docker图像名称container_commands然后执行docker run -ti $container-name python manage.py migrate等等,但不知道它是如何以及它感觉非常hacky
我可以手动运行迁移
我可以代替CMD gunicorn $etc用CMD $script,其中$script应用迁移,然后开始gunicorn.
非常欢迎您的想法!
我认为在 Dockerfile 中使用ENTRYPOINT可能会解决您的问题。
您可以在容器映像中编写一个脚本(负责数据库迁移、启动网络服务器和其他健全性检查),并在 Dockerfile ENTRYPOINT中调用该脚本。
ADD run_all /opt/bin/
ENTRYPOINT ["/opt/bin/run_all"]
Run Code Online (Sandbox Code Playgroud)
这样,仅当您创建该映像的容器时才会执行脚本。
或者使用ENTRYPOINT运行这两个命令 (Python manage.py migrate && httpd start)
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |