Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
390b016cc2 | ||
|
|
e9d7ce262d | ||
|
|
fdd3793ee1 |
@@ -80,6 +80,21 @@ steps:
|
|||||||
- branch: main
|
- branch: main
|
||||||
event: push
|
event: push
|
||||||
|
|
||||||
|
# Backend zuerst - die Admin-Seite braucht die API
|
||||||
|
deploy_backend:
|
||||||
|
image: node:20
|
||||||
|
environment:
|
||||||
|
FLY_API_TOKEN:
|
||||||
|
from_secret: FLY_API_TOKEN
|
||||||
|
commands:
|
||||||
|
- curl -L https://fly.io/install.sh | sh
|
||||||
|
- export PATH="$HOME/.fly/bin:$PATH"
|
||||||
|
# aus backend/ heraus, damit Build-Kontext und Dockerfile stimmen
|
||||||
|
- cd backend && flyctl deploy --app gallus-cms-backend --remote-only
|
||||||
|
when:
|
||||||
|
- branch: main
|
||||||
|
event: push
|
||||||
|
|
||||||
deploy_frontend:
|
deploy_frontend:
|
||||||
image: node:20
|
image: node:20
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { env, validateEnv } from './config/env.js';
|
|||||||
import { db, initDatabase } from './config/database.js';
|
import { db, initDatabase } from './config/database.js';
|
||||||
import fastifyStatic from '@fastify/static';
|
import fastifyStatic from '@fastify/static';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
import fs from 'fs';
|
||||||
|
|
||||||
// Import routes
|
// Import routes
|
||||||
import authRoute from './routes/auth.js';
|
import authRoute from './routes/auth.js';
|
||||||
@@ -79,12 +80,25 @@ fastify.register(multipart, {
|
|||||||
|
|
||||||
// Serve static files (uploaded images, etc.) from persistent volume
|
// Serve static files (uploaded images, etc.) from persistent volume
|
||||||
const dataDir = env.GIT_WORKSPACE_DIR || path.join(process.cwd(), 'data');
|
const dataDir = env.GIT_WORKSPACE_DIR || path.join(process.cwd(), 'data');
|
||||||
|
// Muss existieren, sonst verweigert @fastify/static die Registrierung
|
||||||
|
fs.mkdirSync(dataDir, { recursive: true });
|
||||||
fastify.register(fastifyStatic, {
|
fastify.register(fastifyStatic, {
|
||||||
root: dataDir,
|
root: dataDir,
|
||||||
prefix: '/static/',
|
prefix: '/static/',
|
||||||
decorateReply: false
|
decorateReply: false
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Uploads liegen unter <workspace>/public/images. In der DB stehen sie als
|
||||||
|
// /images/... - das ist die URL auf der publizierten Astro-Seite. Damit die
|
||||||
|
// Admin-Oberflaeche dieselben Pfade verwenden kann, hier ebenso ausliefern.
|
||||||
|
const imagesDir = path.join(dataDir, 'public', 'images');
|
||||||
|
fs.mkdirSync(imagesDir, { recursive: true });
|
||||||
|
fastify.register(fastifyStatic, {
|
||||||
|
root: imagesDir,
|
||||||
|
prefix: '/images/',
|
||||||
|
decorateReply: false
|
||||||
|
});
|
||||||
|
|
||||||
// Decorate fastify with authenticate method
|
// Decorate fastify with authenticate method
|
||||||
fastify.decorate('authenticate', authenticate);
|
fastify.decorate('authenticate', authenticate);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user