Building docker
This commit is contained in:
+2
-2
@@ -2,8 +2,8 @@ FROM python:3.14-slim AS base
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
# Copy pyproject.toml first to leverage Docker cache
|
# Copy pyproject.toml and README.md first to leverage Docker cache
|
||||||
COPY pyproject.toml .
|
COPY pyproject.toml README.md ./
|
||||||
# We can use pip to install the project in editable mode or just dependencies
|
# We can use pip to install the project in editable mode or just dependencies
|
||||||
RUN pip install --no-cache-dir .
|
RUN pip install --no-cache-dir .
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# Baby Sleep Tracker
|
||||||
|
|
||||||
|
A self-hosted web application for tracking infant sleep sessions, optimized for Raspberry Pi 4 (ARM64).
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Tracker Tab**: Start and stop sleep sessions with a single click. Adjust start/end times easily.
|
||||||
|
- **Stats Tab**: Visualize sleep patterns with daily summaries (day vs. night), continuous time-slot grids, and wakeup/bedtime trend plots.
|
||||||
|
- **Responsive Design**: Built for mobile use via a clean, thumb-friendly UI.
|
||||||
|
- **Dockerized**: Easy deployment using Docker Compose.
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
- **Frontend**: React 19, Vite 6, TypeScript, Tailwind CSS v4, Recharts, TanStack Query.
|
||||||
|
- **Backend**: Python 3.12+, FastAPI, SQLModel (SQLAlchemy + P/Dantic), SQLite.
|
||||||
|
- **Deployment**: Docker, Docker Compose.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- [Docker](https://docs.docker.com/get-docker/)
|
||||||
|
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||||||
|
|
||||||
|
*Note: If building on an x86 machine for ARM64 (Raspberry Pi), ensure you use `docker buildx`.*
|
||||||
|
|
||||||
|
### Running with Docker Compose
|
||||||
|
|
||||||
|
1. Clone the repository.
|
||||||
|
2. Navigate to the project root.
|
||||||
|
3. Run the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
The application will be available at:
|
||||||
|
- **Frontend**: [http://localhost](http://localhost)
|
||||||
|
- **Backend API**: [http://localhost:8000](http://localhost:8000)
|
||||||
|
|
||||||
|
### Development Setup
|
||||||
|
|
||||||
|
#### Backend
|
||||||
|
|
||||||
|
Requires `uv` and Python 3.14+.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd backend
|
||||||
|
uv sync
|
||||||
|
uv run uvicorn app.main:app --reload
|
||||||
|
```
|
||||||
|
|
||||||
|
Run tests:
|
||||||
|
```bash
|
||||||
|
uv run pytest
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Frontend
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd frontend
|
||||||
|
npm install
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Run tests:
|
||||||
|
```bash
|
||||||
|
npm run test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
- `backend/`: FastAPI application, models, and API routes.
|
||||||
|
- `frontend/`: React application with components and hooks.
|
||||||
|
- `docker-compose.yml`: Orchestration for the full stack.
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
name = "baby-sleep-tracker-backend"
|
name = "baby-sleep-tracker-backend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "FastAPI backend for Baby Sleep Tracker"
|
description = "FastAPI backend for Baby Sleep Tracker"
|
||||||
readme = "../README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.14"
|
requires-python = ">=3.14"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastapi",
|
"fastapi",
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
docker buildx build \
|
||||||
|
--platform linux/arm64 \
|
||||||
|
-t babymonitor-frontend:latest \
|
||||||
|
-f frontend/Dockerfile
|
||||||
|
--load
|
||||||
|
frontend
|
||||||
|
|
||||||
|
docker buildx build \
|
||||||
|
--platform linux/arm64 \
|
||||||
|
-t babymonitor-backend:latest \
|
||||||
|
-f backend/Dockerfile
|
||||||
|
--load
|
||||||
|
backend
|
||||||
|
|
||||||
+1
-1
@@ -15,7 +15,7 @@ services:
|
|||||||
context: ./frontend
|
context: ./frontend
|
||||||
platforms: [linux/arm64]
|
platforms: [linux/arm64]
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "8080:80"
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
docker buildx create --name babymonitorbuilder --use
|
||||||
|
docker buildx inspect --bootstrap
|
||||||
Reference in New Issue
Block a user