Compare commits
No commits in common. "591bf684207b0ce49bf9fbf379a4077500349286" and "d2a6da0e83650d06d9f48953a0eea9131fb26c16" have entirely different histories.
591bf68420
...
d2a6da0e83
|
|
@ -1,9 +0,0 @@
|
|||
FROM python:3.11-slim
|
||||
|
||||
WORKDIR /app
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY src/services/app ./app
|
||||
# 'python -m' avoids entrypoint shell
|
||||
CMD ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
on: [push]
|
||||
|
||||
jobs:
|
||||
lint-build:
|
||||
runs-on: podman
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Run pre-commit checks
|
||||
run: |
|
||||
pip install pre-commit
|
||||
pre-commit run --all-files
|
||||
|
||||
- name: Build FastAPI image
|
||||
run: |
|
||||
podman build -t cmmc-fastapi:${{ forgejo.sha }} \
|
||||
-f .container-images/fastapi.Dockerfile .
|
||||
|
||||
# optional push to internal registry:
|
||||
# - name: Push image
|
||||
# run: podman push cmmc-fastapi:${{ forgejo.sha }} <registry>/<path>:${{ forgejo.sha }}
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
############################################################
|
||||
# Core language + tooling
|
||||
############################################################
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*.pyo
|
||||
*.pyd
|
||||
*.egg-info/
|
||||
*.egg
|
||||
*.trace
|
||||
pip-wheel-metadata/
|
||||
|
||||
# Virtual-envs
|
||||
.venv/
|
||||
venv/
|
||||
.env/
|
||||
# Poetry / pipenv virtual envs
|
||||
.poetry/
|
||||
.pipenv/
|
||||
|
||||
# Ruff / pytest cache
|
||||
.cache/
|
||||
.pytest_cache/
|
||||
|
||||
# Node (used by markdownlint-cli2, etc.)
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
pnpm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
############################################################
|
||||
# Containers & Podman Compose
|
||||
############################################################
|
||||
# Podman/Docker build cache & artifacts
|
||||
*.tar
|
||||
*.oci
|
||||
# Local image layers (rootless)
|
||||
~/.local/share/containers/
|
||||
# Podman-compose temp files
|
||||
podman-compose.env
|
||||
|
||||
############################################################
|
||||
# Infrastructure-as-Code generated artifacts
|
||||
############################################################
|
||||
# Terraform
|
||||
.terraform/
|
||||
terraform.tfstate
|
||||
terraform.tfstate.*
|
||||
crash.log
|
||||
# TFLint / tfsec results
|
||||
.tflint.*
|
||||
tfsec.log
|
||||
|
||||
# Helm
|
||||
charts/
|
||||
*.tgz
|
||||
# Helmfile diff/output
|
||||
helmfile*.yaml.orig
|
||||
|
||||
############################################################
|
||||
# Documentation & diagrams
|
||||
############################################################
|
||||
# Structurizr export cache
|
||||
docs/architecture/c4/*.png
|
||||
docs/architecture/c4/*.svg
|
||||
|
||||
############################################################
|
||||
# IDE / Editor cruft
|
||||
############################################################
|
||||
# VS Code
|
||||
.vscode/
|
||||
.history/
|
||||
# JetBrains
|
||||
.idea/
|
||||
*.iml
|
||||
|
||||
############################################################
|
||||
# OS-level temp files
|
||||
############################################################
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
|
||||
############################################################
|
||||
# Secrets — keep these paths tracked if you use SOPS/Vault!
|
||||
##############
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.4.4 # latest Ruff tag that ships hooks file
|
||||
hooks:
|
||||
- id: ruff
|
||||
stages: [pre-commit]
|
||||
|
||||
- repo: https://github.com/markdownlint/markdownlint
|
||||
rev: v0.12.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
stages: [pre-commit]
|
||||
files: \.(md|markdown)$
|
||||
exclude: \.venv/
|
||||
|
||||
- repo: https://github.com/aquasecurity/tfsec
|
||||
rev: v1.28.4
|
||||
hooks:
|
||||
- id: tfsec
|
||||
args: ["--no-colour"]
|
||||
stages: [pre-commit]
|
||||
|
||||
- repo: https://github.com/mxab/pre-commit-trivy
|
||||
rev: v0.15.0 # latest tag as of June 2025
|
||||
hooks:
|
||||
- id: trivyfs-docker # scan source tree for vulns/secrets
|
||||
stages: [pre-push]
|
||||
args:
|
||||
- --skip-dirs
|
||||
- .git
|
||||
- .forgejo
|
||||
15
Makefile
15
Makefile
|
|
@ -1,15 +0,0 @@
|
|||
compose = podman-compose -f dev-compose.yaml
|
||||
|
||||
up: ## start local stack
|
||||
$(compose) up -d
|
||||
|
||||
down: ## stop stack
|
||||
$(compose) down
|
||||
|
||||
logs: ## follow logs
|
||||
$(compose) logs -f
|
||||
|
||||
build: ## build FastAPI image locally
|
||||
podman build -t cmmc-fastapi:latest -f .container-images/fastapi.Dockerfile .
|
||||
|
||||
.PHONY: up down logs build
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
version: "3.9"
|
||||
|
||||
x-common-env: &common-env
|
||||
TZ: "UTC"
|
||||
|
||||
services:
|
||||
kong:
|
||||
image: docker.io/library/kong:3.7
|
||||
container_name: kong
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
<<: *common-env
|
||||
KONG_DATABASE: "off"
|
||||
KONG_DECLARATIVE_CONFIG: /config/kong.yml
|
||||
KONG_LOG_LEVEL: info
|
||||
volumes:
|
||||
- ./kong/kong.yml:/config/kong.yml:ro
|
||||
ports:
|
||||
- "8000:8000" # proxy
|
||||
- "8001:8001" # admin api
|
||||
networks: [internal]
|
||||
|
||||
keycloak:
|
||||
image: quay.io/keycloak/keycloak:25.0.0
|
||||
container_name: keycloak
|
||||
command: start-dev
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
<<: *common-env
|
||||
KEYCLOAK_ADMIN: admin
|
||||
KEYCLOAK_ADMIN_PASSWORD: admin
|
||||
KC_PROXY_HEADERS: xforwarded
|
||||
ports:
|
||||
- "8080:8080"
|
||||
networks: [internal]
|
||||
|
||||
fastapi:
|
||||
image: cmmc-fastapi:latest # built by CI or `make build`
|
||||
container_name: fastapi
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
<<: *common-env
|
||||
APP_ENV: dev
|
||||
ports:
|
||||
- "8008:8000"
|
||||
networks: [internal]
|
||||
|
||||
networks:
|
||||
internal:
|
||||
driver: bridge
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
fastapi==0.111.0
|
||||
uvicorn[standard]==0.30.0
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
FROM python:3.11-slim
|
||||
|
||||
WORKDIR /app
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY src/services/app ./app
|
||||
# 'python -m' avoids entrypoint shell
|
||||
CMD ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
from fastapi import FastAPI
|
||||
|
||||
app = FastAPI(title="CMMC Platform API MVP", version="0.1.0")
|
||||
|
||||
|
||||
@app.get("/healthz", tags=["meta"])
|
||||
async def healthz() -> dict[str, str]:
|
||||
return {"status": "pong"}
|
||||
|
||||
|
||||
@app.get("/", tags=["meta"])
|
||||
async def root() -> dict[str, str]:
|
||||
return {"message": "CMMC Platform – it works!"}
|
||||
Loading…
Reference in New Issue