This is a tool to run set of containerized services during development. It makes it easier to start / stop set of services on demand.
Supported services:
- ELK stack (Elasticsearch + Logstash + Kibana)
- EventStoreDB
- InfluxDB
- MongoDB
- PostgreSQL
- RabbitMQ
- Redis
- Seq
- SQL Server
- Vault
- Docker with Docker Compose CLI plugin (https://docs.docker.com/install/, https://docs.docker.com/compose/install/compose-plugin/) or Podman with Podman Compose CLI plugin (https://podman.io/docs/installation, https://github.com/containers/podman-compose)
- PowerShell Core: https://github.com/powershell/powershell
Set of services is started using Docker/Podman Compose.
Each service in the set is defined in its own directory services/<service-name>-<version>/service.yaml
.
All services use bridge network devsvcnet
(defined in services/network.yaml
), so they are immediately available on the host machine.
Sets are defined in service-set/set.yaml
files. There are two sets provided out of the box:
default
: EventStoreDB, RabbitMQ, MongoDB, PostgreSQL, Seq_template
: this set has all the supported services included and can be used as a starting point when creating own sets
- Clone or copy this repository locally, or download from releases page
- Create a service set file
service-sets/<set>.local.yaml
(there is a rule in.gitignore
to exclude.local.yaml
files from source control); use_template_.yaml
as a template and do not forget to change set name to something meaningful - Review included services
service.yaml
definitions. If you need to change environment variables to a service, add file.env/<service-name>-<version>.env
. Typically this would be used to change default credentials. See corresponding serviceservice.env
file for a reference.
It is recommended to organize sets by products / use cases. E.g. if Product1 us using ELK and MongoDB, and Product2 uses ELK, Postgres, and Redis, you may have following sets:
product-sets/prod1.local.yaml
set: prod1
services:
- elasticsearch-8.3
- kibana-8.3
- mongo-4.2
product-sets/prod2.local.yaml
set: prod2
services:
- elasticsearch-8.3
- kibana-8.3
- postgres-14.4
- redis-7.0
NOTE: You can define multiple custom service sets, however it is only possible to use them one at a time. All services use same bridge network, so if a service is included in multiple sets, Docker Compose will allocate distinct names for the service in different sets, but they will still use same network port, so only one service can be active at a time that uses that port.
Start service set by name:
start.ps1 -Set <set-name>
By default, docker
engine is used, if you need to use podman
specify this using -Engine
parameter:
start.ps1 -Set <set-name> -Engine podman
Stop service set that was previously started by start.ps1 <set-name>
.
stop.ps1