add: deployment ready

This commit is contained in:
guamss 2026-06-05 01:03:03 +02:00
parent 29f0976f84
commit 5ca65c77cb
6 changed files with 29 additions and 5 deletions

1
.gitignore vendored
View File

@ -23,4 +23,5 @@ pnpm-debug.log*
# jetbrains setting folder # jetbrains setting folder
.idea/ .idea/
photos/
public/IMG/ public/IMG/

View File

@ -3,7 +3,7 @@ WORKDIR /app
COPY . . COPY . .
RUN mkdir -p /app/public/IMG RUN mkdir -p /app/dist/client/IMG
RUN npm install RUN npm install
@ -13,6 +13,6 @@ ENV HOST=0.0.0.0
ENV PORT=4321 ENV PORT=4321
EXPOSE 4321 EXPOSE 4321
ENV PHOTO_DIR_ABSOLUTE_PATH=/app/public/IMG ENV PHOTO_DIR_ABSOLUTE_PATH=/app/dist/client/IMG
CMD ["node", "./dist/server/entry.mjs"] CMD ["node", "./dist/server/entry.mjs"]

View File

@ -6,4 +6,4 @@ services:
ports: ports:
- "4321:4321" - "4321:4321"
volumes: volumes:
- ./photos:/app/public/IMG - ./photos:/app/dist/client/IMG

24
src/pages/IMG/[file].ts Normal file
View File

@ -0,0 +1,24 @@
import fs from "node:fs";
import path from "node:path";
import type { APIRoute } from "astro";
export const prerender = false;
export const GET: APIRoute = ({ params }) => {
const file = params.file;
const filePath = path.join(process.env.PHOTO_DIR_ABSOLUTE_PATH!, file!);
if (!fs.existsSync(filePath)) {
return new Response("Image introuvable", { status: 404 });
}
const image = fs.readFileSync(filePath);
return new Response(image, {
headers: {
"Content-Type": "image/jpeg",
"Cache-Control": "public, max-age=31536000",
},
});
};

View File

@ -6,6 +6,7 @@ import Layout from "../components/Layout.astro";
import Image from "../components/Image.astro"; import Image from "../components/Image.astro";
import { initPhotos } from "../misc"; import { initPhotos } from "../misc";
import { PHOTO_DIR_ABSOLUTE_PATH } from "astro:env/server"; import { PHOTO_DIR_ABSOLUTE_PATH } from "astro:env/server";
export const prerender = false;
const imageFilenames = fs const imageFilenames = fs
.readdirSync(PHOTO_DIR_ABSOLUTE_PATH) .readdirSync(PHOTO_DIR_ABSOLUTE_PATH)

View File

@ -38,8 +38,6 @@ const p = initPhoto(
Number(width), Number(width),
Number(height), Number(height),
); );
console.log(tags);
--- ---
<Layout> <Layout>