Skip to content

Commit 9aec472

Browse files
committed
start specific container service when using docker compose
1 parent b688cf6 commit 9aec472

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

core/src/main/scala/com/dimafeng/testcontainers/DockerComposeContainer.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ import org.testcontainers.utility.Base58
1212

1313
import scala.collection.JavaConverters._
1414

15+
sealed trait Services
16+
object Services {
17+
case object All extends Services
18+
final case class Specific(services: Seq[Service]) extends Services
19+
}
20+
21+
final case class Service(name: String)
22+
1523
object ExposedService {
1624
def apply(name: String, port: Int, instance: Int, waitStrategy: WaitStrategy): ExposedService =
1725
ExposedService(name, port, waitStrategy, Option(instance))
@@ -52,9 +60,10 @@ object DockerComposeContainer {
5260
@deprecated("Please use expanded `apply` method")
5361
def apply(composeFiles: ComposeFile,
5462
exposedService: Map[String, Int]): DockerComposeContainer =
55-
new DockerComposeContainer(composeFiles, exposedService)
63+
new DockerComposeContainer(composeFiles, Services.All, exposedService)
5664

5765
def apply(composeFiles: ComposeFile,
66+
services: Services = Services.All,
5867
exposedServices: Seq[ExposedService] = Seq.empty,
5968
identifier: String = DockerComposeContainer.randomIdentifier,
6069
scaledServices: Seq[ScaledService] = Seq.empty,
@@ -65,6 +74,7 @@ object DockerComposeContainer {
6574
logConsumers: Seq[ServiceLogConsumer] = Seq.empty,
6675
waitingFor: Option[WaitingForService] = None): DockerComposeContainer =
6776
new DockerComposeContainer(composeFiles,
77+
services,
6878
exposedServices,
6979
identifier,
7080
scaledServices,
@@ -77,6 +87,7 @@ object DockerComposeContainer {
7787

7888
case class Def(
7989
composeFiles: ComposeFile,
90+
services: Services = Services.All,
8091
exposedServices: Seq[ExposedService] = Seq.empty,
8192
identifier: String = DockerComposeContainer.randomIdentifier,
8293
scaledServices: Seq[ScaledService] = Seq.empty,
@@ -93,6 +104,7 @@ object DockerComposeContainer {
93104
override def createContainer(): DockerComposeContainer = {
94105
DockerComposeContainer(
95106
composeFiles,
107+
services,
96108
exposedServices,
97109
identifier,
98110
scaledServices,
@@ -109,6 +121,7 @@ object DockerComposeContainer {
109121
}
110122

111123
class DockerComposeContainer(composeFiles: ComposeFile,
124+
services: Services = Services.All,
112125
exposedServices: Seq[ExposedService] = Seq.empty,
113126
identifier: String = DockerComposeContainer.randomIdentifier,
114127
scaledServices: Seq[ScaledService] = Seq.empty,
@@ -126,6 +139,11 @@ class DockerComposeContainer(composeFiles: ComposeFile,
126139
case ComposeFile(Right(files)) => files.asJava
127140
})
128141

142+
services match {
143+
case Services.Specific(services) => container.withServices(services.map(_.name) : _*)
144+
case Services.All =>
145+
}
146+
129147
exposedServices.foreach { service =>
130148
if (service.instance.isDefined) {
131149
container.withExposedService(service.name, service.instance.get, service.port, service.waitStrategy)

0 commit comments

Comments
 (0)