mirror of
https://github.com/pikami/cosmium.git
synced 2024-11-28 00:17:37 +00:00
Compare commits
3 Commits
398584368f
...
ec5f82cd54
Author | SHA1 | Date | |
---|---|---|---|
|
ec5f82cd54 | ||
|
26dcd68ace | ||
|
86c0275410 |
7
.github/workflows/release.yml
vendored
7
.github/workflows/release.yml
vendored
@ -7,6 +7,7 @@ on:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
goreleaser:
|
||||
@ -20,6 +21,12 @@ jobs:
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.21.6
|
||||
- name: Docker Login
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Run GoReleaser
|
||||
uses: goreleaser/goreleaser-action@v5
|
||||
with:
|
||||
|
@ -31,5 +31,22 @@ brews:
|
||||
name: pikami
|
||||
email: git@pikami.org
|
||||
|
||||
dockers:
|
||||
- image_templates:
|
||||
- "ghcr.io/pikami/{{ .ProjectName }}:{{ .Version }}"
|
||||
- "ghcr.io/pikami/{{ .ProjectName }}:latest"
|
||||
dockerfile: Dockerfile
|
||||
use: docker
|
||||
build_flag_templates:
|
||||
- "--platform=linux/amd64"
|
||||
- "--pull"
|
||||
- "--label=org.opencontainers.image.title={{.ProjectName}}"
|
||||
- "--label=org.opencontainers.image.description=Lightweight Cosmos DB emulator"
|
||||
- "--label=org.opencontainers.image.url=https://github.com/pikami/cosmium"
|
||||
- "--label=org.opencontainers.image.source=https://github.com/pikami/cosmium"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
|
||||
checksum:
|
||||
name_template: 'checksums.txt'
|
||||
|
6
Dockerfile
Normal file
6
Dockerfile
Normal file
@ -0,0 +1,6 @@
|
||||
FROM scratch
|
||||
|
||||
WORKDIR /app
|
||||
COPY cosmium /app/cosmium
|
||||
|
||||
ENTRYPOINT ["/app/cosmium"]
|
20
README.md
20
README.md
@ -47,6 +47,17 @@ If you want to run Cosmos DB Explorer alongside Cosmium, you'll need to build it
|
||||
|
||||
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).
|
||||
|
||||
### Running with docker (optional)
|
||||
|
||||
If you wan to run the application using docker, configure it using environment variables see example:
|
||||
```sh
|
||||
docker run --rm \
|
||||
-e Persist=/save.json \
|
||||
-v ./save.json:/save.json \
|
||||
-p 8081:8081 \
|
||||
ghcr.io/pikami/cosmium
|
||||
```
|
||||
|
||||
### SSL Certificate
|
||||
|
||||
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.
|
||||
@ -65,5 +76,14 @@ To disable SSL and run Cosmium on HTTP instead, you can use the `-DisableTls` fl
|
||||
|
||||
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:
|
||||
* **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`
|
||||
|
||||
# License
|
||||
This project is [MIT licensed](./LICENSE).
|
||||
|
@ -3,10 +3,13 @@ package config
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultAccountKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
|
||||
EnvPrefix = "COSMIUM_"
|
||||
)
|
||||
|
||||
var Config = ServerConfig{}
|
||||
@ -25,6 +28,7 @@ func ParseFlags() {
|
||||
debug := flag.Bool("Debug", false, "Runs application in debug mode, this provides additional logging")
|
||||
|
||||
flag.Parse()
|
||||
setFlagsFromEnvironment()
|
||||
|
||||
Config.Host = *host
|
||||
Config.Port = *port
|
||||
@ -42,3 +46,17 @@ func ParseFlags() {
|
||||
Config.DatabaseEndpoint = fmt.Sprintf("https://%s:%d/", Config.Host, Config.Port)
|
||||
Config.AccountKey = *accountKey
|
||||
}
|
||||
|
||||
func setFlagsFromEnvironment() (err error) {
|
||||
flag.VisitAll(func(f *flag.Flag) {
|
||||
name := EnvPrefix + strings.ToUpper(strings.Replace(f.Name, "-", "_", -1))
|
||||
if value, ok := os.LookupEnv(name); ok {
|
||||
err2 := flag.Set(f.Name, value)
|
||||
if err2 != nil {
|
||||
err = fmt.Errorf("failed setting flag from environment: %w", err2)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user