Building docker

This commit is contained in:
2026-04-26 20:29:45 +02:00
parent 2fd00013f1
commit 54e382cbb3
7 changed files with 98 additions and 4 deletions
+2 -2
View File
@@ -2,8 +2,8 @@ FROM python:3.14-slim AS base
WORKDIR /app
FROM base AS builder
# Copy pyproject.toml first to leverage Docker cache
COPY pyproject.toml .
# Copy pyproject.toml and README.md first to leverage Docker cache
COPY pyproject.toml README.md ./
# We can use pip to install the project in editable mode or just dependencies
RUN pip install --no-cache-dir .
+75
View File
@@ -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.
+1 -1
View File
@@ -2,7 +2,7 @@
name = "baby-sleep-tracker-backend"
version = "0.1.0"
description = "FastAPI backend for Baby Sleep Tracker"
readme = "../README.md"
readme = "README.md"
requires-python = ">=3.14"
dependencies = [
"fastapi",
+16
View File
@@ -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
View File
@@ -15,7 +15,7 @@ services:
context: ./frontend
platforms: [linux/arm64]
ports:
- "80:80"
- "8080:80"
depends_on:
- backend
restart: unless-stopped
View File
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
docker buildx create --name babymonitorbuilder --use
docker buildx inspect --bootstrap