diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8c24b79 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +# Git +.git +.github +.githooks +.gitignore + +# Local environment and secrets +.venv +.env + +# Python cache and test cache +__pycache__ +.pytest_cache +.ruff_cache +.mypy_cache +.coverage +htmlcov + +# Build artifacts +dist +build +*.egg-info + +# Project docs not needed for the test image +docs \ No newline at end of file diff --git a/README.md b/README.md index 607f0d0..213fe1d 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ README.md - Tkinter - pytest -### Current data source +### Current data sources - ExchangeRate API for live currency conversion - yfinance for historical market-data retrieval and analytics @@ -140,8 +140,6 @@ Planned or likely future technologies include: ### Data processing -- pandas -- NumPy - possibly Polars later for larger datasets ### Storage @@ -153,14 +151,10 @@ Planned or likely future technologies include: ### Visualization and UI -- matplotlib -- Plotly - NiceGUI ### DevOps and deployment -- GitHub Actions -- Docker - Docker Compose - cloud deployment later @@ -199,6 +193,7 @@ Recommended for development: - VS Code - a virtual environment - pytest +- Docker, if you want to run tests in an isolated container environment > [!NOTE] > Runtime dependencies are managed through `pyproject.toml`. @@ -254,7 +249,7 @@ pip install -e ".[dev]" ## API Key Setup -ARGUS currently uses the ExchangeRate API for live currency conversion. +ARGUS uses the ExchangeRate API for live currency conversion. Historical analytics currently use yfinance and do not require an additional API key. ### 1. Create an API key @@ -284,7 +279,7 @@ The `.env` file must stay local and should never be committed. --- -## Running ARGUS +## Running ARGUS Locally Start the current Tkinter GUI: @@ -294,6 +289,22 @@ python -m argus.main This starts the local ARGUS prototype with calculator, currency conversion and basic analytics views. +## Running Argus in Docker + +ARGUS includes a minimal Docker setup for running the test suite in an isolated container environment. + +Build the Docker image: + +```bash +docker build -t argus . +``` + +Run ARGUS in a container: + +```bash +docker run --rm argus +``` + ### Legacy CLI / Debug Interface The legacy CLI is still available for quick local checks and debugging: @@ -310,7 +321,7 @@ python src/legacy/debug_main.py ## Running Tests -Run the test suite: +Run the test suite locally: ```bash pytest diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..1dce2e8 --- /dev/null +++ b/dockerfile @@ -0,0 +1,12 @@ +FROM python:3.11-slim + +WORKDIR /app + +COPY pyproject.toml README.md ./ +COPY src/ ./src/ +COPY tests/ ./tests/ + +RUN python -m pip install --upgrade pip \ + && pip install -e ".[dev]" + +CMD ["pytest"] \ No newline at end of file