From d0de22f2f6a591263fb2348743fab5a2f7b46367 Mon Sep 17 00:00:00 2001 From: Yolanda Robla Date: Tue, 10 Dec 2024 11:42:21 +0000 Subject: [PATCH 1/3] feat: allow to parameterize urls in docker image Right now the only url that could be parameterized is VLLM_URL. Expose the other urls as well so they can be customized Closes: #243 --- Dockerfile | 7 +++++-- README.md | 18 ++++++++++++++++-- scripts/entrypoint.sh | 33 +++++++++++++++++++++------------ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 55e5363f..ef6c59cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -99,8 +99,11 @@ EXPOSE 80 ENV PYTHONPATH=/app/src # Define an argument for vlm_url with a default value -ENV VLLM_URL=https://inference.codegate.ai +ENV CODEGATE_VLLM_URL=https://inference.codegate.ai +ENV CODEGATE_OPENAI_URL= +ENV CODEGATE_ANTHROPIC_URL= +ENV CODEGATE_OLLAMA_URL= # Set the container's default entrypoint EXPOSE 8989 -ENTRYPOINT ["/app/scripts/entrypoint.sh", "/tmp/weaviate_backup", "backup"] \ No newline at end of file +ENTRYPOINT ["/app/scripts/entrypoint.sh"] \ No newline at end of file diff --git a/README.md b/README.md index 66398230..b5f7e3af 100644 --- a/README.md +++ b/README.md @@ -150,11 +150,25 @@ make image-build ### Run the Container ```bash -# Basic usage +# Basic usage with local image docker run -p 8989:8989 codegate:latest +# With pre-built pulled image +docker pull ghcr.io/stacklok/codegate/codegate:latest +docker run -p 8989:8989 ghcr.io/stacklok/codegate/codegate:latest + # With persistent data -docker run -p 8989:8989 -v /path/to/volume:/app/weaviate_data codegate:latest +docker run -p 8989:8989 -v /path/to/volume:/app/weaviate_data ghcr.io/stacklok/codegate/codegate:latest +``` + +### Exposed parameters +- CODEGATE_VLLM_URL: URL for the inference engine (defaults to [https://inference.codegate.ai](https://inference.codegate.ai)) +- CODEGATE_OPENAI_URL: URL for OpenAI inference engine (defaults to [https://api.openai.com/v1](https://api.openai.com/v1)) +- CODEGATE_ANTHROPIC_URL: URL for Anthropic inference engine (defaults to [https://api.anthropic.com/v1](https://api.anthropic.com/v1)) +- CODEGATE_OLLAMA_URL: URL for OLlama inference engine (defaults to [http://localhost:11434/api](http://localhost:11434/api)) + +```bash +docker run -p 8989:8989 -e CODEGATE_OLLAMA_URL=http://1.2.3.4:11434/api ghcr.io/stacklok/codegate/codegate:latest ``` ## 🤝 Contributing diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 44c6cb5e..4f79da2f 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -1,19 +1,20 @@ #!/bin/bash -DEFAULT_VLLM_URL="https://inference.codegate.ai" -VLLM_URL=${VLLM_URL:-$DEFAULT_VLLM_URL} +DEFAULT_CODEGATE_VLLM_URL="https://inference.codegate.ai" +CODEGATE_VLLM_URL=${CODEGATE_VLLM_URL:-$DEFAULT_CODEGATE_VLLM_URL} -# Parse arguments -BACKUP_PATH=$1 -BACKUP_MODE=$2 +# those are hardcoded on the image, will not change +BACKUP_PATH="/tmp/weaviate_backup" +BACKUP_NAME="backup" +MODEL_BASE_PATH="/app/models" # Function to restore backup if paths are provided restore_backup() { - if [ -n "$BACKUP_PATH" ] && [ -n "$BACKUP_MODE" ]; then - if [ -d "$BACKUP_PATH" ] && [ -d "$BACKUP_PATH/$BACKUP_MODE" ]; then - echo "Restoring backup from $BACKUP_PATH/$BACKUP_MODE..." - python -m src.codegate.cli restore-backup --backup-path "$BACKUP_PATH" --backup-name "$BACKUP_MODE" + if [ -n "$BACKUP_PATH" ] && [ -n "$BACKUP_NAME" ]; then + if [ -d "$BACKUP_PATH" ] && [ -d "$BACKUP_PATH/$BACKUP_NAME" ]; then + echo "Restoring backup from $BACKUP_PATH/$BACKUP_NAME..." + python -m src.codegate.cli restore-backup --backup-path "$BACKUP_PATH" --backup-name "$BACKUP_NAME" else - echo "No backup found at $BACKUP_PATH/$BACKUP_MODE. Skipping restore." + echo "No backup found at $BACKUP_PATH/$BACKUP_NAME. Skipping restore." fi else echo "Backup path or mode not provided. Skipping restore." @@ -28,13 +29,21 @@ start_dashboard() { # Function to start the main application start_application() { - echo "Starting the application with VLLM URL: $VLLM_URL" - exec python -m src.codegate.cli serve --port 8989 --host 0.0.0.0 --vllm-url "$VLLM_URL" --model-base-path /app/models + echo "Starting the application with VLLM URL: $CODEGATE_VLLM_URL" + CMD_ARGS="--port 8989 --host 0.0.0.0 --vllm-url \"$CODEGATE_VLLM_URL\" --model-base-path \"$MODEL_BASE_PATH\"" + + # Check and append additional URLs if they are set + [ -n "$CODEGATE_OPENAI_URL" ] && CMD_ARGS+=" --openai-url \"$CODEGATE_OPENAI_URL\"" + [ -n "$CODEGATE_ANTHROPIC_URL" ] && CMD_ARGS+=" --anthropic-url \"$CODEGATE_ANTHROPIC_URL\"" + [ -n "$CODEGATE_OLLAMA_URL" ] && CMD_ARGS+=" --ollama-url \"$CODEGATE_OLLAMA_URL\"" + + exec python -m src.codegate.cli serve $CMD_ARGS } # Main execution flow echo "Initializing entrypoint script..." + # Step 1: Restore backup if applicable restore_backup From 702585c465db61d10671520a6be22d45b1f79b4c Mon Sep 17 00:00:00 2001 From: Yolanda Robla Date: Tue, 10 Dec 2024 16:00:15 +0000 Subject: [PATCH 2/3] allow to parameterize log level --- Dockerfile | 3 ++- README.md | 1 + scripts/entrypoint.sh | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ef6c59cb..83f3515d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -98,11 +98,12 @@ EXPOSE 80 # Set the PYTHONPATH environment variable ENV PYTHONPATH=/app/src -# Define an argument for vlm_url with a default value +# Expose additional env vars ENV CODEGATE_VLLM_URL=https://inference.codegate.ai ENV CODEGATE_OPENAI_URL= ENV CODEGATE_ANTHROPIC_URL= ENV CODEGATE_OLLAMA_URL= +ENV CODEGATE_APP_LOG_LEVEL=WARNING # Set the container's default entrypoint EXPOSE 8989 diff --git a/README.md b/README.md index b5f7e3af..eedf27aa 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,7 @@ docker run -p 8989:8989 -v /path/to/volume:/app/weaviate_data ghcr.io/stacklok/c - CODEGATE_OPENAI_URL: URL for OpenAI inference engine (defaults to [https://api.openai.com/v1](https://api.openai.com/v1)) - CODEGATE_ANTHROPIC_URL: URL for Anthropic inference engine (defaults to [https://api.anthropic.com/v1](https://api.anthropic.com/v1)) - CODEGATE_OLLAMA_URL: URL for OLlama inference engine (defaults to [http://localhost:11434/api](http://localhost:11434/api)) +- CODEGATE_APP_LOG_LEVEL: Level of debug desired when running the codegate server (defaults to WARNING, can be ERROR/WARNING/INFO/DEBUG) ```bash docker run -p 8989:8989 -e CODEGATE_OLLAMA_URL=http://1.2.3.4:11434/api ghcr.io/stacklok/codegate/codegate:latest diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 4f79da2f..6ad00637 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -29,7 +29,6 @@ start_dashboard() { # Function to start the main application start_application() { - echo "Starting the application with VLLM URL: $CODEGATE_VLLM_URL" CMD_ARGS="--port 8989 --host 0.0.0.0 --vllm-url \"$CODEGATE_VLLM_URL\" --model-base-path \"$MODEL_BASE_PATH\"" # Check and append additional URLs if they are set @@ -37,6 +36,10 @@ start_application() { [ -n "$CODEGATE_ANTHROPIC_URL" ] && CMD_ARGS+=" --anthropic-url \"$CODEGATE_ANTHROPIC_URL\"" [ -n "$CODEGATE_OLLAMA_URL" ] && CMD_ARGS+=" --ollama-url \"$CODEGATE_OLLAMA_URL\"" + # Check and append debug level if set + [ -n "$CODEGATE_APP_LOG_LEVEL" ] && CMD_ARGS+=" --log-level $CODEGATE_APP_LOG_LEVEL" + echo "Starting the application with args: $CMD_ARGS" + exec python -m src.codegate.cli serve $CMD_ARGS } From f1f2ee11e8af70ea2f30ee23544b82a302261e1c Mon Sep 17 00:00:00 2001 From: Yolanda Robla Date: Tue, 10 Dec 2024 16:20:45 +0000 Subject: [PATCH 3/3] allow to expose codegate_log_format --- Dockerfile | 1 + README.md | 1 + scripts/entrypoint.sh | 1 + 3 files changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 83f3515d..7d126919 100644 --- a/Dockerfile +++ b/Dockerfile @@ -104,6 +104,7 @@ ENV CODEGATE_OPENAI_URL= ENV CODEGATE_ANTHROPIC_URL= ENV CODEGATE_OLLAMA_URL= ENV CODEGATE_APP_LOG_LEVEL=WARNING +ENV CODEGATE_LOG_FORMAT=TEXT # Set the container's default entrypoint EXPOSE 8989 diff --git a/README.md b/README.md index eedf27aa..1c6b173c 100644 --- a/README.md +++ b/README.md @@ -167,6 +167,7 @@ docker run -p 8989:8989 -v /path/to/volume:/app/weaviate_data ghcr.io/stacklok/c - CODEGATE_ANTHROPIC_URL: URL for Anthropic inference engine (defaults to [https://api.anthropic.com/v1](https://api.anthropic.com/v1)) - CODEGATE_OLLAMA_URL: URL for OLlama inference engine (defaults to [http://localhost:11434/api](http://localhost:11434/api)) - CODEGATE_APP_LOG_LEVEL: Level of debug desired when running the codegate server (defaults to WARNING, can be ERROR/WARNING/INFO/DEBUG) +- CODEGATE_LOG_FORMAT: Type of log formatting desired when running the codegate server (default to TEXT, can be JSON/TEXT) ```bash docker run -p 8989:8989 -e CODEGATE_OLLAMA_URL=http://1.2.3.4:11434/api ghcr.io/stacklok/codegate/codegate:latest diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 6ad00637..5ba3cf57 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -38,6 +38,7 @@ start_application() { # Check and append debug level if set [ -n "$CODEGATE_APP_LOG_LEVEL" ] && CMD_ARGS+=" --log-level $CODEGATE_APP_LOG_LEVEL" + [ -n "$CODEGATE_LOG_FORMAT" ] && CMD_ARGS+=" --log-format $CODEGATE_LOG_FORMAT" echo "Starting the application with args: $CMD_ARGS" exec python -m src.codegate.cli serve $CMD_ARGS