从Gradle构建脚本控制docker编写

从Gradle构建脚本控制docker编写,gradle,docker,docker-compose,Gradle,Docker,Docker Compose,对于我的测试,我需要运行带有一些数据库的容器。我已经使用docker compose设置了所有内容,如果容器已启动,我的测试将正常工作。注意:这些不是单元测试,而是集成测试,它们可以运行更长的时间 从Gradle控制docker compose的最佳方式是什么?我需要运行容器(如果没有启动)并启动测试。这也适用于OSX和Linux。我认为您可以运行docker compose up-d来启动环境 您可以运行docker-compose-stop;docker编写rm-f作为测试完成时的清理任务(

对于我的测试,我需要运行带有一些数据库的容器。我已经使用docker compose设置了所有内容,如果容器已启动,我的测试将正常工作。注意:这些不是单元测试,而是集成测试,它们可以运行更长的时间


从Gradle控制docker compose的最佳方式是什么?我需要运行容器(如果没有启动)并启动测试。这也适用于OSX和Linux。

我认为您可以运行
docker compose up-d
来启动环境


您可以运行
docker-compose-stop;docker编写rm-f作为测试完成时的清理任务(如果您想停止一切并移除容器)。

尽管这个问题已经有点过时了:

我写了一个插件来做你想要的。您可以在构建脚本中包含容器定义,它将直接从Gradle为您管理容器生命周期:

plugins {
  id "com.chrisgahlert.gradle-dcompose-plugin" version "0.8.1"
}

dcompose {
  database {
    image = 'mysql:latest'
    portBindings = ['3306:3306']
  }
}

test {
  dependsOn startDatabaseContainer
  finalizedBy removeDatabaseContainer
}
这将在运行
gradletest
之前启动MySQL数据库,然后将其删除


有关更多详细信息,请参阅:

Agree。只需使用
exec
任务执行
docker compose
。您可以在
test
任务中使用
dependsOn
finalizedBy
,以确保在测试之前/之后启动和停止容器。