Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Docker和Jenkins自动化Flyway迁移_Docker_Jenkins_Docker Compose_Flyway - Fatal编程技术网

使用Docker和Jenkins自动化Flyway迁移

使用Docker和Jenkins自动化Flyway迁移,docker,jenkins,docker-compose,flyway,Docker,Jenkins,Docker Compose,Flyway,我想为我们的MariaDB数据库自动化Flyway迁移。出于测试目的,我在我的docker compose.yml中添加了以下服务,只运行info命令 flyway: image: boxfuse/flyway:5.2.4 command: -url=jdbc:mariadb://mariadb_service -schemas=$${MYSQL_DATABASE} -table=schema_version -connectRetries=60 info volum

我想为我们的MariaDB数据库自动化Flyway迁移。出于测试目的,我在我的
docker compose.yml
中添加了以下服务,只运行
info
命令

  flyway:
    image: boxfuse/flyway:5.2.4
    command: -url=jdbc:mariadb://mariadb_service -schemas=$${MYSQL_DATABASE} -table=schema_version -connectRetries=60 info
    volumes:
      - ./db/migration:/flyway/sql
    depends_on:
      - mariadb_service
这似乎起作用了,即我可以看到
info
的输出

现在,我想把这个想法更进一步,并将其集成到我们的Jenkins build管道中。这就是我被卡住的地方

  • 如果我在我的
    Jenkinsfile
    中使用上面的
    Docker compose.yml
    部署Docker堆栈,迁移过程中出现错误时相应的阶段会失败吗?我说,詹金斯会注意到这个错误吗
  • 如果不是这样,我如何将Flyway迁移集成到Jenkins管道中?我发现有一个Flyway Runner插件,但我不知道它是否可以连接到由
    Jenkinsfile部署的Docker堆栈中的数据库
  • 你可以用。那么您的管道脚本可能包含该阶段

    stage(“应用数据库更改”){
    代理人{
    码头工人{
    图像“boxfuse/flyway:5.2.4”
    args'-v./db/migration:/flyway/sql--entrypoint=\'\'\''
    }
    }
    台阶{
    sh“/flyway/flyway-url=jdbc:mariadb://mariadb_service -schemas=${MYSQL\u DATABASE}-table=schema\u version-connectRetries=60 info”
    }
    }
    
    这样,
    步骤将在Jenkins从image创建的临时Docker容器中执行。如果命令失败,整个阶段也将失败。

    您可以使用。那么您的管道脚本可能包含该阶段

    stage(“应用数据库更改”){
    代理人{
    码头工人{
    图像“boxfuse/flyway:5.2.4”
    args'-v./db/migration:/flyway/sql--entrypoint=\'\'\''
    }
    }
    台阶{
    sh“/flyway/flyway-url=jdbc:mariadb://mariadb_service -schemas=${MYSQL\u DATABASE}-table=schema\u version-connectRetries=60 info”
    }
    }
    
    这样,
    步骤将在Jenkins从image创建的临时Docker容器中执行。如果命令失败,整个阶段也将失败