feat: add CI/CD, Docker Compose, and update demo for Docker environment
Co-authored-by: aider (openrouter/openai/o3-mini-high) <aider@aider.chat>
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
.git
|
||||||
|
.github
|
||||||
|
.forgejo
|
||||||
|
__pycache__
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
*.pyd
|
||||||
|
.Python
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
.venv/
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
.tox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.log
|
||||||
|
.git*
|
||||||
|
tests/
|
||||||
|
container-data/
|
||||||
|
docker-compose.yml
|
||||||
|
.dockerignore
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
name: Build and Publish Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
tags: [ 'v*' ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main, master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Login to Docker Registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ secrets.DOCKER_REGISTRY }}
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
|
||||||
|
- name: Extract metadata for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v4
|
||||||
|
with:
|
||||||
|
images: ${{ secrets.DOCKER_REGISTRY }}/clevermicro/amq-adapter-python-demo
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=sha,format=short
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
@@ -116,3 +116,36 @@ AMQ_VERBOSE_LOGGING - if set to 1, the adapter will indicate in the log next to
|
|||||||
|
|
||||||
As an open-source project we run entierly off donations. Buy one of our hardworking developers a beer by [donating at OpenCollective](https://opencollective.com/cleverthis). All donations go to our bounty fund and allow us to place bounties on important bugs and enhancements. You may also use Beerpay linked via the above badges.
|
As an open-source project we run entierly off donations. Buy one of our hardworking developers a beer by [donating at OpenCollective](https://opencollective.com/cleverthis). All donations go to our bounty fund and allow us to place bounties on important bugs and enhancements. You may also use Beerpay linked via the above badges.
|
||||||
|
|
||||||
|
## Running with Docker Compose
|
||||||
|
|
||||||
|
This project includes a Docker Compose configuration for easy local development and testing.
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- Docker and Docker Compose installed on your system
|
||||||
|
|
||||||
|
### Starting the services
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
This will start:
|
||||||
|
- The demo application (accessible at http://localhost:8000)
|
||||||
|
- Jaeger for distributed tracing (UI at http://localhost:16686)
|
||||||
|
- Prometheus for metrics collection (UI at http://localhost:9090)
|
||||||
|
- Alertmanager for alert handling (UI at http://localhost:9093)
|
||||||
|
- RabbitMQ for messaging (Management UI at http://localhost:15672)
|
||||||
|
|
||||||
|
### Stopping the services
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
To remove volumes as well:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose down -v
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ async def upload_document(
|
|||||||
# If running directly on host, use http://localhost:8000
|
# If running directly on host, use http://localhost:8000
|
||||||
# If running inside Docker and calling itself, use http://host.docker.internal:8000
|
# If running inside Docker and calling itself, use http://host.docker.internal:8000
|
||||||
# "http://localhost:8000/api/v3/documents/metadata",
|
# "http://localhost:8000/api/v3/documents/metadata",
|
||||||
"http://host.docker.internal:8000/api/v3/documents/metadata",
|
"http://app:8000/api/v3/documents/metadata",
|
||||||
json=metadata_payload,
|
json=metadata_payload,
|
||||||
)
|
)
|
||||||
response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx)
|
response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx)
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
- "8001:8001"
|
||||||
|
environment:
|
||||||
|
- OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4317
|
||||||
|
depends_on:
|
||||||
|
- jaeger
|
||||||
|
- prometheus
|
||||||
|
- rabbitmq
|
||||||
|
- alertmanager
|
||||||
|
|
||||||
|
jaeger:
|
||||||
|
image: jaegertracing/all-in-one:latest
|
||||||
|
ports:
|
||||||
|
- "6831:6831/udp"
|
||||||
|
- "14268:14268"
|
||||||
|
- "14250:14250"
|
||||||
|
- "4317:4317"
|
||||||
|
- "4318:4318"
|
||||||
|
- "16686:16686"
|
||||||
|
environment:
|
||||||
|
- COLLECTOR_OTLP_ENABLED=true
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus:latest
|
||||||
|
volumes:
|
||||||
|
- ./container-data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
|
||||||
|
- ./container-data/prometheus/alert-rules.yml:/etc/prometheus/alert-rules.yml
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
command:
|
||||||
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||||
|
depends_on:
|
||||||
|
- alertmanager
|
||||||
|
|
||||||
|
alertmanager:
|
||||||
|
image: prom/alertmanager:latest
|
||||||
|
ports:
|
||||||
|
- "9093:9093"
|
||||||
|
volumes:
|
||||||
|
- ./container-data/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
|
||||||
|
command:
|
||||||
|
- '--config.file=/etc/alertmanager/alertmanager.yml'
|
||||||
|
|
||||||
|
rabbitmq:
|
||||||
|
image: rabbitmq:3-management-alpine
|
||||||
|
ports:
|
||||||
|
- "5672:5672"
|
||||||
|
- "15672:15672"
|
||||||
|
- "15692:15692"
|
||||||
|
environment:
|
||||||
|
- RABBITMQ_DEFAULT_USER=guest
|
||||||
|
- RABBITMQ_DEFAULT_PASS=guest
|
||||||
|
volumes:
|
||||||
|
- rabbitmq_data:/var/lib/rabbitmq
|
||||||
|
labels:
|
||||||
|
prometheus-job: rabbitmq
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
rabbitmq_data:
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fastapi==0.111.0
|
||||||
|
uvicorn[standard]==0.29.0
|
||||||
|
python-multipart==0.0.9
|
||||||
|
httpx==0.27.0
|
||||||
|
opentelemetry-api==1.34.1
|
||||||
|
opentelemetry-sdk==1.34.1
|
||||||
|
opentelemetry-exporter-otlp-proto-grpc==1.34.1
|
||||||
|
opentelemetry-exporter-prometheus==0.55b1
|
||||||
|
opentelemetry-instrumentation-fastapi==0.55b1
|
||||||
|
opentelemetry-instrumentation-httpx==0.55b1
|
||||||
|
protobuf==5.28.3
|
||||||
Reference in New Issue
Block a user