Compare commits

...

3 Commits

Author SHA1 Message Date
Pijus Kamandulis ec5f82cd54 Fix docker tags 2024-04-06 19:14:37 +03:00
Pijus Kamandulis 26dcd68ace Added Docker to releaser configuration 2024-04-06 19:07:14 +03:00
Pijus Kamandulis 86c0275410 Added ability to configure using environment variables 2024-03-11 23:35:47 +02:00
5 changed files with 68 additions and 0 deletions

View File

@ -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:

View File

@ -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
View File

@ -0,0 +1,6 @@
FROM scratch
WORKDIR /app
COPY cosmium /app/cosmium
ENTRYPOINT ["/app/cosmium"]

View File

@ -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).

View File

@ -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
}