gpt4 book ai didi

django - docker-compose - 数据库迁移和其他前/后脚本

转载 作者:行者123 更新时间:2023-12-04 20:38:03 26 4
gpt4 key购买 nike

我有一个示例 django 应用程序,我正在尝试使用 docker 启动并运行它。
docker-compose up调出 web、db 和其他容器以及它们之间的链接。但是有可能需要运行前脚本和后脚本。

我的场景中的前脚本示例:

git
pip
docker
docker-compose
wget

后脚本示例:

数据库迁移,通常使用 docker run web... 手动完成在容器启动并运行之后。

目前我在应用程序的根目录下有一个 deploy.sh,它遵循这样的逻辑..(我在启动时选择了一个 ubuntu 图像)
#assuming I always choose ubuntu base image
sudo apt-get install x
sudo apt-get install y
sudo apt-get install z
docker-compose build .; docker-compose up -d;
docker-compose run web "python manage.py makemigrations"

我的问题:

1)运行这些命令的最佳方式是什么?

2) 每次部署时是否都运行数据库迁移(从头开始?) - 或者这个问题是否由卷处理?

最佳答案

您有两个选择:

  • 您可以在 dockerfile 中为您的图像运行这些命令;当 compose 运行时,每个 dockerfile 都会运行 - 您的图像将具有这些命令的结果。这在您进行操作系统级升级和配置引导(如您的 apt-get 命令)时特别有用。
  • 对于运行时级别的配置(系统启动后你需要做的事情),使用 command docker-compose.yml 文件中的指令。这些将是您的迁移(如果您每次都需要运行它们)。

  • 如果你想在 docker compose 的运行中保存你的数据(也就是说,你的数据应该在你重新启动容器时保留);那么您需要针对您的主机的持久映射或共享的数据卷 - 您也可以在 docker-compose.yml 中进行配置。

    docker-compose 将很乐意运行您提供的任何脚本——它不知道是否需要运行它,它只是执行命令。由您来确保您的前、后、引导脚本足够智能,即使它们的有效结果已经应用,它们也可以重复。

    关于django - docker-compose - 数据库迁移和其他前/后脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715239/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com