cosmium/README.md

96 lines
3.9 KiB
Markdown
Raw Normal View History

2024-02-25 21:27:21 +00:00
# Cosmium
2024-06-01 17:52:07 +01:00
Cosmium is a lightweight Cosmos DB emulator designed to facilitate local development and testing. While it aims to provide developers with a solution for running a local database during development, it's important to note that it's not 100% compatible with Cosmos DB. However, it serves as a convenient tool for E2E or integration tests during the CI/CD pipeline. Read more about compatibility [here](./docs/compatibility.md).
2024-02-25 21:27:21 +00:00
One of Cosmium's notable features is its ability to save and load state to a single JSON file. This feature makes it easy to load different test cases or share state with other developers, enhancing collaboration and efficiency in development workflows.
# Getting Started
2024-06-01 17:52:07 +01:00
### Installation via Homebrew
2024-06-01 17:52:07 +01:00
You can install Cosmium using Homebrew by adding the `pikami/brew` tap and then installing the package.
```sh
brew tap pikami/brew
brew install cosmium
```
This will download and install Cosmium on your system, making it easy to manage and update using Homebrew.
### Downloading Cosmium Binaries
2024-02-25 21:27:21 +00:00
You can download the latest version of Cosmium from the [GitHub Releases page](https://github.com/pikami/cosmium/releases). Choose the appropriate release for your operating system and architecture.
### Supported Platforms
Cosmium is available for the following platforms:
2024-06-01 17:52:07 +01:00
- **Linux**: cosmium-linux-amd64
- **macOS**: cosmium-darwin-amd64
- **macOS on Apple Silicon**: cosmium-darwin-arm64
- **Windows**: cosmium-windows-amd64.exe
2024-02-25 21:27:21 +00:00
### Running Cosmium
Once downloaded, you can launch Cosmium using the following command:
```sh
cosmium -Persist "./save.json"
2024-02-25 21:27:21 +00:00
```
Connection String Example:
2024-06-01 17:52:07 +01:00
2024-02-25 21:27:21 +00:00
```
AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;
```
2024-06-01 17:52:07 +01:00
### Running Cosmos DB Explorer
2024-02-25 21:27:21 +00:00
If you want to run Cosmos DB Explorer alongside Cosmium, you'll need to build it yourself and point the `-ExplorerDir` argument to the dist directory. Please refer to the [Cosmos DB Explorer repository](https://github.com/Azure/cosmos-explorer) for instructions on building the application.
Once running, the explorer can be reached by navigating following URL: `https://127.0.0.1:8081/_explorer/` (might be different depending on your configuration).
2024-04-06 16:55:15 +01:00
### Running with docker (optional)
If you wan to run the application using docker, configure it using environment variables see example:
2024-06-01 17:52:07 +01:00
2024-04-06 16:55:15 +01:00
```sh
docker run --rm \
-e Persist=/save.json \
-v ./save.json:/save.json \
-p 8081:8081 \
ghcr.io/pikami/cosmium
```
2024-02-25 21:27:21 +00:00
### SSL Certificate
2024-02-27 19:58:57 +00:00
By default, Cosmium uses a pre-generated SSL certificate. You can provide your own certificates by specifying paths to the SSL certificate and key (PEM format) using the `-Cert` and `-CertKey` arguments, respectively.
To disable SSL and run Cosmium on HTTP instead, you can use the `-DisableTls` flag. However most applications will require HTTPS.
2024-02-25 21:27:21 +00:00
### Other Available Arguments
2024-06-01 17:52:07 +01:00
- **-AccountKey**: Account key for authentication (default "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==")
- **-DisableAuth**: Disable authentication
- **-Host**: Hostname (default "localhost")
- **-InitialData**: Path to JSON containing initial state
- **-Persist**: Saves data to the given path on application exit (When `-InitialData` argument is not supplied, it will try to load data from path supplied in `-Persist`)
- **-Port**: Listen port (default 8081)
- **-Debug**: Runs application in debug mode, this provides additional logging
2024-02-25 21:27:21 +00:00
These arguments allow you to configure various aspects of Cosmium's behavior according to your requirements.
All mentioned arguments can also be set using environment variables:
2024-06-01 17:52:07 +01:00
- **COSMIUM_ACCOUNTKEY** for `-AccountKey`
- **COSMIUM_DISABLEAUTH** for `-DisableAuth`
- **COSMIUM_HOST** for `-Host`
- **COSMIUM_INITIALDATA** for `-InitialData`
- **COSMIUM_PERSIST** for `-Persist`
- **COSMIUM_PORT** for `-Port`
- **COSMIUM_DEBUG** for `-Debug`
2024-02-25 21:27:21 +00:00
# License
2024-06-01 17:52:07 +01:00
2024-02-25 21:27:21 +00:00
This project is [MIT licensed](./LICENSE).