In order to create docker-based Starters you need to import legolas-docker module. In this module you can find legolas.docker.interfaces.DockerStarter class. Just extends this class and implement abstract methods.
Bootstrappers can be created by implementing legolas.bootstrapper.api.interfaces.Bootstrapper interface.
Bootstrappers that depends on network port availability can be created by implementing the legolas.bootstrapper.api.interfaces.NetworkBootstrapper interface.
What is the difference between Starters and Bootstrappers?
Starters has the puporse to be a replacement for an infrastructural component (databases, message brokers, storage, caches, etc).
Bootstrappers has the puporse to be a required component for the application to run that can be a network service (http server, web socket server, graphql engine) or a JVM object (jdbc client, cache client, http client, etc).
Migrations
Migrations can be created by implementing legolas.migration.api.interfaces.Migration. Migrations can have dependencies with another migrations. If is the case of your Migration, so you can do it by getting it using the legolas.migration.api.interfaces.MigrationId.
General behaviour of Legolas Modules
If the network port needed by a PortStarter is not available, the starter will not run because Legolas understands that another instance is already running in another JVM Session.
If the network port needed by a NetworkBootstrapper is not available, Legolas will find another port by incrementing 1 by 1 until an available port is found, then this port will be used to start NetworkBootstrapper instance.