feat: initial project setup with implementation plan
- Add PLAN.md with 40-step checklist across 10 phases - Add CLAUDE.md with project-specific instructions - Set up nix flake with FastHTML/MonsterUI dependencies - Create Python package skeleton (src/animaltrack) - Vendor FastHTML and MonsterUI documentation - Add Docker build configuration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
66
docker.nix
Normal file
66
docker.nix
Normal file
@@ -0,0 +1,66 @@
|
||||
{ pkgs, pythonEnv, python }:
|
||||
|
||||
let
|
||||
# Build animaltrack as a package
|
||||
animaltrack = python.pkgs.buildPythonApplication {
|
||||
pname = "animaltrack";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
format = "pyproject";
|
||||
|
||||
nativeBuildInputs = [ python.pkgs.setuptools ];
|
||||
|
||||
propagatedBuildInputs = [ pythonEnv ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
# Don't wrap, we'll handle PATH manually
|
||||
dontWrapPythonPrograms = true;
|
||||
};
|
||||
in
|
||||
pkgs.dockerTools.buildImage {
|
||||
name = "gitea.v.paler.net/ppetru/animaltrack";
|
||||
tag = "latest";
|
||||
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "animaltrack-env";
|
||||
paths = with pkgs; [
|
||||
# System utilities
|
||||
busybox
|
||||
bash
|
||||
sqlite
|
||||
|
||||
# Python environment with all packages
|
||||
pythonEnv
|
||||
|
||||
# Animaltrack application
|
||||
animaltrack
|
||||
] ++ [
|
||||
# Docker filesystem helpers
|
||||
pkgs.dockerTools.usrBinEnv
|
||||
pkgs.dockerTools.binSh
|
||||
pkgs.dockerTools.fakeNss
|
||||
pkgs.dockerTools.caCertificates
|
||||
];
|
||||
};
|
||||
|
||||
runAsRoot = ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
mkdir -p -m 1777 /tmp
|
||||
mkdir -p /var/lib/animaltrack
|
||||
'';
|
||||
|
||||
config = {
|
||||
Env = [
|
||||
"DB_PATH=/var/lib/animaltrack/animaltrack.db"
|
||||
"PATH=${pkgs.lib.makeBinPath [ pkgs.busybox pkgs.bash pkgs.sqlite pythonEnv ]}"
|
||||
"PYTHONPATH=${pythonEnv}/${pythonEnv.sitePackages}"
|
||||
"PYTHONUNBUFFERED=1"
|
||||
];
|
||||
ExposedPorts = {
|
||||
"5000/tcp" = {};
|
||||
};
|
||||
Cmd = [ "sh" "-c" "animaltrack migrate && animaltrack serve" ];
|
||||
WorkingDir = "/var/lib/animaltrack";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user