0

我使用 DevSpace 工具将我的服务部署到 minikube 本地集群中。

我有两个服务要部署:auth-handlermysql

auth-handler 在 devspace.xml 中有 my-sql 的依赖。所以在没有部署mysql之前它无法启动。

授权处理程序

dependencies:
  - source:
      path: ../mysql
    namespace: databases

mysql有图像阶段。在 Dockerfile 中,我执行逻辑以通过一些数据启动数据库。

images:
  backend:
    image: registry.kube-system.svc.cluster.local/mysql
    tags:
      - local
    dockerfile: ./mysql/Dockerfile

第一次,它工作正常。但是例如,当我第二次重新部署服务时,跳过了mysql的mysql映像阶段,因为如果已经成功构建,DevSpace 会缓存映像阶段。所以我的数据库此时没有初始化,因为跳过了图像阶段。

我可以手动部署mysql-b / --force-build部署 mysql 并强制启动映像阶段,但我不需要手动部署mysql。我需要启动auth-handler的部署,它将启动在模式下部署mysql 。-b / --force-build``-b / --force-build

4

1 回答 1

1

我建议不要在 Dockerfile 中填充数据库,而是在hooks可以运行的 devspace.yaml 部分中添加一个钩子,devspace enter -c [mysql] -- command-to-populate-db或者添加一个 init 容器来填充数据库。这将更加灵活。

有关钩子的更多详细信息,请查看 DevSpace 文档:https ://devspace.sh/cli/docs/configuration/hooks/basics

于 2021-08-05T16:42:03.673 回答