chore(docker): update environment variable prefixes to AMCS

This commit is contained in:
Hein
2026-03-26 16:26:15 +02:00
parent 8d0a91a961
commit 5d43228c2e
7 changed files with 38 additions and 30 deletions

View File

@@ -25,6 +25,6 @@ USER appuser
EXPOSE 8080
ENV OB1_CONFIG=/app/configs/docker.yaml
ENV AMCS_CONFIG=/app/configs/docker.yaml
ENTRYPOINT ["/app/amcs-server"]

View File

@@ -66,7 +66,7 @@ LLM integration instructions are served at `/llm`.
The repo now includes a `Dockerfile` and Compose files for running the app with Postgres + pgvector.
1. Set a real LiteLLM key in your shell:
`export OB1_LITELLM_API_KEY=your-key`
`export AMCS_LITELLM_API_KEY=your-key`
2. Start the stack with your runtime:
`docker compose -f docker-compose.yml -f docker-compose.docker.yml up --build`
`podman compose -f docker-compose.yml up --build`
@@ -75,8 +75,10 @@ The repo now includes a `Dockerfile` and Compose files for running the app with
Notes:
- The app uses `configs/docker.yaml` inside the container.
- `OB1_LITELLM_BASE_URL` overrides the LiteLLM endpoint, so you can retarget it without editing YAML.
- `OB1_OLLAMA_BASE_URL` overrides the Ollama endpoint for local or remote servers.
- The local `./configs` directory is mounted into `/app/configs`, so config edits apply without rebuilding the image.
- `AMCS_LITELLM_BASE_URL` overrides the LiteLLM endpoint, so you can retarget it without editing YAML.
- `AMCS_OLLAMA_BASE_URL` overrides the Ollama endpoint for local or remote servers.
- The Compose stack uses a default bridge network named `amcs`.
- The base Compose file uses `host.containers.internal`, which is Podman-friendly.
- The Docker override file adds `host-gateway` aliases so Docker can resolve the same host endpoint.
- Database migrations `001` through `005` run automatically when the Postgres volume is created for the first time.

View File

@@ -25,14 +25,20 @@ services:
db:
condition: service_healthy
restart: unless-stopped
volumes:
- ./configs:/app/configs:ro
environment:
OB1_CONFIG: /app/configs/docker.yaml
OB1_DATABASE_URL: postgres://postgres:postgres@db:5432/amcs?sslmode=disable
OB1_LITELLM_BASE_URL: ${OB1_LITELLM_BASE_URL:-http://host.containers.internal:4000/v1}
OB1_LITELLM_API_KEY: ${OB1_LITELLM_API_KEY:-replace-me}
OB1_SERVER_PORT: 8080
AMCS_CONFIG: /app/configs/docker.yaml
AMCS_DATABASE_URL: postgres://postgres:postgres@db:5432/amcs?sslmode=disable
AMCS_LITELLM_BASE_URL: ${AMCS_LITELLM_BASE_URL:-http://host.containers.internal:4000/v1}
AMCS_LITELLM_API_KEY: ${AMCS_LITELLM_API_KEY:-replace-me}
AMCS_SERVER_PORT: 8080
ports:
- "8080:8080"
volumes:
postgres_data:
networks:
default:
name: amcs

View File

@@ -36,7 +36,7 @@ func ResolvePath(explicitPath string) string {
return explicitPath
}
if envPath := strings.TrimSpace(os.Getenv("OB1_CONFIG")); envPath != "" {
if envPath := strings.TrimSpace(os.Getenv("AMCS_CONFIG")); envPath != "" {
return envPath
}
@@ -98,14 +98,14 @@ func defaultConfig() Config {
}
func applyEnvOverrides(cfg *Config) {
overrideString(&cfg.Database.URL, "OB1_DATABASE_URL")
overrideString(&cfg.AI.LiteLLM.BaseURL, "OB1_LITELLM_BASE_URL")
overrideString(&cfg.AI.LiteLLM.APIKey, "OB1_LITELLM_API_KEY")
overrideString(&cfg.AI.Ollama.BaseURL, "OB1_OLLAMA_BASE_URL")
overrideString(&cfg.AI.Ollama.APIKey, "OB1_OLLAMA_API_KEY")
overrideString(&cfg.AI.OpenRouter.APIKey, "OB1_OPENROUTER_API_KEY")
overrideString(&cfg.Database.URL, "AMCS_DATABASE_URL")
overrideString(&cfg.AI.LiteLLM.BaseURL, "AMCS_LITELLM_BASE_URL")
overrideString(&cfg.AI.LiteLLM.APIKey, "AMCS_LITELLM_API_KEY")
overrideString(&cfg.AI.Ollama.BaseURL, "AMCS_OLLAMA_BASE_URL")
overrideString(&cfg.AI.Ollama.APIKey, "AMCS_OLLAMA_API_KEY")
overrideString(&cfg.AI.OpenRouter.APIKey, "AMCS_OPENROUTER_API_KEY")
if value, ok := os.LookupEnv("OB1_SERVER_PORT"); ok {
if value, ok := os.LookupEnv("AMCS_SERVER_PORT"); ok {
if port, err := strconv.Atoi(strings.TrimSpace(value)); err == nil {
cfg.Server.Port = port
}

View File

@@ -7,7 +7,7 @@ import (
)
func TestResolvePathPrecedence(t *testing.T) {
t.Setenv("OB1_CONFIG", "/tmp/from-env.yaml")
t.Setenv("AMCS_CONFIG", "/tmp/from-env.yaml")
if got := ResolvePath("/tmp/explicit.yaml"); got != "/tmp/explicit.yaml" {
t.Fatalf("ResolvePath explicit = %q, want %q", got, "/tmp/explicit.yaml")
@@ -47,9 +47,9 @@ logging:
t.Fatalf("write config: %v", err)
}
t.Setenv("OB1_DATABASE_URL", "postgres://from-env")
t.Setenv("OB1_LITELLM_API_KEY", "env-key")
t.Setenv("OB1_SERVER_PORT", "9090")
t.Setenv("AMCS_DATABASE_URL", "postgres://from-env")
t.Setenv("AMCS_LITELLM_API_KEY", "env-key")
t.Setenv("AMCS_SERVER_PORT", "9090")
cfg, loadedFrom, err := Load(configPath)
if err != nil {
@@ -102,8 +102,8 @@ logging:
t.Fatalf("write config: %v", err)
}
t.Setenv("OB1_OLLAMA_BASE_URL", "https://ollama.example.com/v1")
t.Setenv("OB1_OLLAMA_API_KEY", "remote-key")
t.Setenv("AMCS_OLLAMA_BASE_URL", "https://ollama.example.com/v1")
t.Setenv("AMCS_OLLAMA_API_KEY", "remote-key")
cfg, _, err := Load(configPath)
if err != nil {

View File

@@ -515,16 +515,16 @@ type OpenRouterAIConfig struct {
### Order
1. `--config /path/to/file.yaml`
2. `OB1_CONFIG`
2. `AMCS_CONFIG`
3. default `./configs/dev.yaml`
4. environment overrides for specific fields
### Suggested env overrides
* `OB1_DATABASE_URL`
* `OB1_LITELLM_API_KEY`
* `OB1_OPENROUTER_API_KEY`
* `OB1_SERVER_PORT`
* `AMCS_DATABASE_URL`
* `AMCS_LITELLM_API_KEY`
* `AMCS_OPENROUTER_API_KEY`
* `AMCS_SERVER_PORT`
---

View File

@@ -2,10 +2,10 @@
set -euo pipefail
DATABASE_URL="${DATABASE_URL:-${OB1_DATABASE_URL:-}}"
DATABASE_URL="${DATABASE_URL:-${AMCS_DATABASE_URL:-}}"
if [[ -z "${DATABASE_URL}" ]]; then
echo "DATABASE_URL or OB1_DATABASE_URL must be set" >&2
echo "DATABASE_URL or AMCS_DATABASE_URL must be set" >&2
exit 1
fi