在Azure Devops管道发布期间在Linux版Container中运行命令

时间:2019-02-04 13:43:09

标签: azure-devops azure-pipelines

当前,我正在将Azure镜像从AzureDevops部署到AppService for Linux中。我想在容器完全可用之前进行一些迁移。

通过在我的容器中调用cli命令来执行数据库迁移。如何通过DevOps管道实现这一目标?

  1. 是否可以通过SSH到特定的未完全部署容器?
  2. 是否可以在不配置SSH的情况下运行cli命令?
  3. 在使容器可用之前,还有其他建议的迁移/运行脚本的方法吗?

2 个答案:

答案 0 :(得分:1)

我们通过修改容器入口点实现了这一目标。我们不太在乎同时执行从多个容器进行的迁移,它由迁移框架处理。

#!/bin/bash

set -e

if [[ -n $MIGRATION_ONSTART ]]; then
    ( su -s /bin/bash -c "/var/www/bin/console migration:continue" www-data &)
fi

exec "$@"

答案 1 :(得分:1)

我想您有两种选择:

  1. 运行某种执行迁移的初始化脚本,然后启动Web服务器\您实际处理的工作是什么
  2. 修改默认情况下容器运行的entrypoint \ command,因此它可以自己执行(dockerfile reference)。

类似这样的东西:

RUN /bin/bash -c 'run migrations; run payload'