From 961de429f9ea9d12d3e4a058aaa4ec1ac4e7c199 Mon Sep 17 00:00:00 2001 From: Fendy Date: Mon, 7 Sep 2026 21:24:33 +0800 Subject: [PATCH] fix(deploy): pin distinct image tags per compose (booklib/{api,web}:{dev,prod}); same project name shared default tags so dev up without --build ran the prod image --- deploy/docker-compose.dev.yml | 6 ++++-- deploy/docker-compose.yml | 4 +++- {web => frontend}/.gitignore | 0 {web => frontend}/Dockerfile.dev | 0 {web => frontend}/Dockerfile.prod | 0 {web => frontend}/index.html | 0 {web => frontend}/package-lock.json | 0 {web => frontend}/package.json | 0 {web => frontend}/public/icon.svg | 0 {web => frontend}/src/App.tsx | 0 {web => frontend}/src/api/client.ts | 0 {web => frontend}/src/api/types.ts | 0 {web => frontend}/src/auth/AuthContext.tsx | 0 {web => frontend}/src/components/Cover.tsx | 0 {web => frontend}/src/components/ErrorBoundary.tsx | 0 {web => frontend}/src/components/Toaster.tsx | 0 {web => frontend}/src/components/TopBar.tsx | 0 {web => frontend}/src/components/ui.ts | 0 {web => frontend}/src/index.css | 0 {web => frontend}/src/lib/authImage.ts | 0 {web => frontend}/src/lib/group.ts | 0 {web => frontend}/src/lib/progress.ts | 0 {web => frontend}/src/lib/qc.ts | 0 {web => frontend}/src/lib/useProgress.ts | 0 {web => frontend}/src/lib/virt.ts | 0 {web => frontend}/src/main.tsx | 0 {web => frontend}/src/pages/Login.tsx | 0 {web => frontend}/src/pages/Reader.tsx | 0 {web => frontend}/src/pages/Shelf.tsx | 0 {web => frontend}/src/pages/admin/Libraries.tsx | 0 {web => frontend}/src/pages/admin/Users.tsx | 0 {web => frontend}/src/pwa.ts | 0 {web => frontend}/src/readers/CbzReader.tsx | 0 {web => frontend}/src/readers/EpubReader.tsx | 0 {web => frontend}/src/readers/PdfReader.tsx | 0 {web => frontend}/src/readers/TextReader.tsx | 0 {web => frontend}/src/types/shims.d.ts | 0 {web => frontend}/test/authImage.test.ts | 0 {web => frontend}/test/client.test.ts | 0 {web => frontend}/test/group.test.ts | 0 {web => frontend}/test/progress.test.ts | 0 {web => frontend}/test/virt.test.ts | 0 {web => frontend}/tsconfig.json | 0 {web => frontend}/vite.config.ts | 0 {web => frontend}/vitest.config.ts | 0 45 files changed, 7 insertions(+), 3 deletions(-) rename {web => frontend}/.gitignore (100%) rename {web => frontend}/Dockerfile.dev (100%) rename {web => frontend}/Dockerfile.prod (100%) rename {web => frontend}/index.html (100%) rename {web => frontend}/package-lock.json (100%) rename {web => frontend}/package.json (100%) rename {web => frontend}/public/icon.svg (100%) rename {web => frontend}/src/App.tsx (100%) rename {web => frontend}/src/api/client.ts (100%) rename {web => frontend}/src/api/types.ts (100%) rename {web => frontend}/src/auth/AuthContext.tsx (100%) rename {web => frontend}/src/components/Cover.tsx (100%) rename {web => frontend}/src/components/ErrorBoundary.tsx (100%) rename {web => frontend}/src/components/Toaster.tsx (100%) rename {web => frontend}/src/components/TopBar.tsx (100%) rename {web => frontend}/src/components/ui.ts (100%) rename {web => frontend}/src/index.css (100%) rename {web => frontend}/src/lib/authImage.ts (100%) rename {web => frontend}/src/lib/group.ts (100%) rename {web => frontend}/src/lib/progress.ts (100%) rename {web => frontend}/src/lib/qc.ts (100%) rename {web => frontend}/src/lib/useProgress.ts (100%) rename {web => frontend}/src/lib/virt.ts (100%) rename {web => frontend}/src/main.tsx (100%) rename {web => frontend}/src/pages/Login.tsx (100%) rename {web => frontend}/src/pages/Reader.tsx (100%) rename {web => frontend}/src/pages/Shelf.tsx (100%) rename {web => frontend}/src/pages/admin/Libraries.tsx (100%) rename {web => frontend}/src/pages/admin/Users.tsx (100%) rename {web => frontend}/src/pwa.ts (100%) rename {web => frontend}/src/readers/CbzReader.tsx (100%) rename {web => frontend}/src/readers/EpubReader.tsx (100%) rename {web => frontend}/src/readers/PdfReader.tsx (100%) rename {web => frontend}/src/readers/TextReader.tsx (100%) rename {web => frontend}/src/types/shims.d.ts (100%) rename {web => frontend}/test/authImage.test.ts (100%) rename {web => frontend}/test/client.test.ts (100%) rename {web => frontend}/test/group.test.ts (100%) rename {web => frontend}/test/progress.test.ts (100%) rename {web => frontend}/test/virt.test.ts (100%) rename {web => frontend}/tsconfig.json (100%) rename {web => frontend}/vite.config.ts (100%) rename {web => frontend}/vitest.config.ts (100%) diff --git a/deploy/docker-compose.dev.yml b/deploy/docker-compose.dev.yml index 1e2c8d4..9b0a9ae 100644 --- a/deploy/docker-compose.dev.yml +++ b/deploy/docker-compose.dev.yml @@ -16,6 +16,7 @@ services: - ./redis/redis.conf:/usr/local/etc/redis/redis.conf:ro - redis_data:/data api: + image: booklib/api:dev build: { context: .., dockerfile: backend/Dockerfile.dev, target: dev } command: sh -c "go mod download && dlv debug ./cmd/server --headless --listen=0.0.0.0:2345 --api-version=2 --accept-multiclient --continue --log" environment: @@ -35,11 +36,12 @@ services: postgres: { condition: service_healthy } redis: { condition: service_started } web: - build: { context: .., dockerfile: web/Dockerfile.dev, target: dev } + image: booklib/web:dev + build: { context: .., dockerfile: frontend/Dockerfile.dev, target: dev } command: npm run dev -- --host 0.0.0.0 environment: { VITE_PROXY_TARGET: http://api:8080 } volumes: - - ../web:/app + - ../frontend:/app - /app/node_modules ports: ["5173:5173"] depends_on: [api] diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 3e1d3e5..eaceb5a 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -2,7 +2,8 @@ name: booklib services: web: - build: { context: .., dockerfile: web/Dockerfile.prod, target: runner } + image: booklib/web:prod + build: { context: .., dockerfile: frontend/Dockerfile.prod, target: runner } ports: ["${WEB_PORT:-8080}:80"] volumes: - ./nginx/nginx.conf:/etc/booklib/nginx.conf:ro @@ -10,6 +11,7 @@ services: - ./logs/nginx:/var/log/nginx depends_on: [api] api: + image: booklib/api:prod build: { context: .., dockerfile: backend/Dockerfile.prod, target: runner } environment: DATABASE_URL: postgres://lib:lib@postgres:5432/lib?sslmode=disable diff --git a/web/.gitignore b/frontend/.gitignore similarity index 100% rename from web/.gitignore rename to frontend/.gitignore diff --git a/web/Dockerfile.dev b/frontend/Dockerfile.dev similarity index 100% rename from web/Dockerfile.dev rename to frontend/Dockerfile.dev diff --git a/web/Dockerfile.prod b/frontend/Dockerfile.prod similarity index 100% rename from web/Dockerfile.prod rename to frontend/Dockerfile.prod diff --git a/web/index.html b/frontend/index.html similarity index 100% rename from web/index.html rename to frontend/index.html diff --git a/web/package-lock.json b/frontend/package-lock.json similarity index 100% rename from web/package-lock.json rename to frontend/package-lock.json diff --git a/web/package.json b/frontend/package.json similarity index 100% rename from web/package.json rename to frontend/package.json diff --git a/web/public/icon.svg b/frontend/public/icon.svg similarity index 100% rename from web/public/icon.svg rename to frontend/public/icon.svg diff --git a/web/src/App.tsx b/frontend/src/App.tsx similarity index 100% rename from web/src/App.tsx rename to frontend/src/App.tsx diff --git a/web/src/api/client.ts b/frontend/src/api/client.ts similarity index 100% rename from web/src/api/client.ts rename to frontend/src/api/client.ts diff --git a/web/src/api/types.ts b/frontend/src/api/types.ts similarity index 100% rename from web/src/api/types.ts rename to frontend/src/api/types.ts diff --git a/web/src/auth/AuthContext.tsx b/frontend/src/auth/AuthContext.tsx similarity index 100% rename from web/src/auth/AuthContext.tsx rename to frontend/src/auth/AuthContext.tsx diff --git a/web/src/components/Cover.tsx b/frontend/src/components/Cover.tsx similarity index 100% rename from web/src/components/Cover.tsx rename to frontend/src/components/Cover.tsx diff --git a/web/src/components/ErrorBoundary.tsx b/frontend/src/components/ErrorBoundary.tsx similarity index 100% rename from web/src/components/ErrorBoundary.tsx rename to frontend/src/components/ErrorBoundary.tsx diff --git a/web/src/components/Toaster.tsx b/frontend/src/components/Toaster.tsx similarity index 100% rename from web/src/components/Toaster.tsx rename to frontend/src/components/Toaster.tsx diff --git a/web/src/components/TopBar.tsx b/frontend/src/components/TopBar.tsx similarity index 100% rename from web/src/components/TopBar.tsx rename to frontend/src/components/TopBar.tsx diff --git a/web/src/components/ui.ts b/frontend/src/components/ui.ts similarity index 100% rename from web/src/components/ui.ts rename to frontend/src/components/ui.ts diff --git a/web/src/index.css b/frontend/src/index.css similarity index 100% rename from web/src/index.css rename to frontend/src/index.css diff --git a/web/src/lib/authImage.ts b/frontend/src/lib/authImage.ts similarity index 100% rename from web/src/lib/authImage.ts rename to frontend/src/lib/authImage.ts diff --git a/web/src/lib/group.ts b/frontend/src/lib/group.ts similarity index 100% rename from web/src/lib/group.ts rename to frontend/src/lib/group.ts diff --git a/web/src/lib/progress.ts b/frontend/src/lib/progress.ts similarity index 100% rename from web/src/lib/progress.ts rename to frontend/src/lib/progress.ts diff --git a/web/src/lib/qc.ts b/frontend/src/lib/qc.ts similarity index 100% rename from web/src/lib/qc.ts rename to frontend/src/lib/qc.ts diff --git a/web/src/lib/useProgress.ts b/frontend/src/lib/useProgress.ts similarity index 100% rename from web/src/lib/useProgress.ts rename to frontend/src/lib/useProgress.ts diff --git a/web/src/lib/virt.ts b/frontend/src/lib/virt.ts similarity index 100% rename from web/src/lib/virt.ts rename to frontend/src/lib/virt.ts diff --git a/web/src/main.tsx b/frontend/src/main.tsx similarity index 100% rename from web/src/main.tsx rename to frontend/src/main.tsx diff --git a/web/src/pages/Login.tsx b/frontend/src/pages/Login.tsx similarity index 100% rename from web/src/pages/Login.tsx rename to frontend/src/pages/Login.tsx diff --git a/web/src/pages/Reader.tsx b/frontend/src/pages/Reader.tsx similarity index 100% rename from web/src/pages/Reader.tsx rename to frontend/src/pages/Reader.tsx diff --git a/web/src/pages/Shelf.tsx b/frontend/src/pages/Shelf.tsx similarity index 100% rename from web/src/pages/Shelf.tsx rename to frontend/src/pages/Shelf.tsx diff --git a/web/src/pages/admin/Libraries.tsx b/frontend/src/pages/admin/Libraries.tsx similarity index 100% rename from web/src/pages/admin/Libraries.tsx rename to frontend/src/pages/admin/Libraries.tsx diff --git a/web/src/pages/admin/Users.tsx b/frontend/src/pages/admin/Users.tsx similarity index 100% rename from web/src/pages/admin/Users.tsx rename to frontend/src/pages/admin/Users.tsx diff --git a/web/src/pwa.ts b/frontend/src/pwa.ts similarity index 100% rename from web/src/pwa.ts rename to frontend/src/pwa.ts diff --git a/web/src/readers/CbzReader.tsx b/frontend/src/readers/CbzReader.tsx similarity index 100% rename from web/src/readers/CbzReader.tsx rename to frontend/src/readers/CbzReader.tsx diff --git a/web/src/readers/EpubReader.tsx b/frontend/src/readers/EpubReader.tsx similarity index 100% rename from web/src/readers/EpubReader.tsx rename to frontend/src/readers/EpubReader.tsx diff --git a/web/src/readers/PdfReader.tsx b/frontend/src/readers/PdfReader.tsx similarity index 100% rename from web/src/readers/PdfReader.tsx rename to frontend/src/readers/PdfReader.tsx diff --git a/web/src/readers/TextReader.tsx b/frontend/src/readers/TextReader.tsx similarity index 100% rename from web/src/readers/TextReader.tsx rename to frontend/src/readers/TextReader.tsx diff --git a/web/src/types/shims.d.ts b/frontend/src/types/shims.d.ts similarity index 100% rename from web/src/types/shims.d.ts rename to frontend/src/types/shims.d.ts diff --git a/web/test/authImage.test.ts b/frontend/test/authImage.test.ts similarity index 100% rename from web/test/authImage.test.ts rename to frontend/test/authImage.test.ts diff --git a/web/test/client.test.ts b/frontend/test/client.test.ts similarity index 100% rename from web/test/client.test.ts rename to frontend/test/client.test.ts diff --git a/web/test/group.test.ts b/frontend/test/group.test.ts similarity index 100% rename from web/test/group.test.ts rename to frontend/test/group.test.ts diff --git a/web/test/progress.test.ts b/frontend/test/progress.test.ts similarity index 100% rename from web/test/progress.test.ts rename to frontend/test/progress.test.ts diff --git a/web/test/virt.test.ts b/frontend/test/virt.test.ts similarity index 100% rename from web/test/virt.test.ts rename to frontend/test/virt.test.ts diff --git a/web/tsconfig.json b/frontend/tsconfig.json similarity index 100% rename from web/tsconfig.json rename to frontend/tsconfig.json diff --git a/web/vite.config.ts b/frontend/vite.config.ts similarity index 100% rename from web/vite.config.ts rename to frontend/vite.config.ts diff --git a/web/vitest.config.ts b/frontend/vitest.config.ts similarity index 100% rename from web/vitest.config.ts rename to frontend/vitest.config.ts