torben fronted wiederhergestellt
This commit is contained in:
@@ -1,88 +1,34 @@
|
||||
FROM node:alpine
|
||||
FROM node:20-bookworm-slim
|
||||
|
||||
WORKDIR /app
|
||||
# Create application directory
|
||||
RUN mkdir -p /usr/src/app
|
||||
|
||||
# Install system dependencies for SQLite and native modules
|
||||
RUN apk add --no-cache python3 build-base g++ make sqlite sqlite-dev gcc musl-dev git libffi-dev openssl-dev cmake
|
||||
# Set environment variables
|
||||
ENV PORT=3000
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy package.json and pnpm-lock.yaml
|
||||
COPY package.json /usr/src/app
|
||||
COPY pnpm-lock.yaml /usr/src/app
|
||||
|
||||
# Install pnpm
|
||||
RUN npm install -g pnpm
|
||||
RUN corepack enable pnpm
|
||||
|
||||
# Copy package files
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
# Install dependencies
|
||||
RUN pnpm install
|
||||
|
||||
# Install dependencies with native bindings build approval, ensuring to build from source for all platforms
|
||||
ENV CFLAGS="-fPIC" \
|
||||
LDFLAGS="-fPIC" \
|
||||
CXXFLAGS="-fPIC" \
|
||||
npm_config_build_from_source=true \
|
||||
npm_config_sqlite=/usr/local \
|
||||
npm_config_sqlite_libname=sqlite3
|
||||
# Copy the rest of the application code
|
||||
COPY . /usr/src/app
|
||||
|
||||
# Durchführen der Installation mit umfassenden Flags für native Bindungen
|
||||
RUN pnpm install --unsafe-perm --no-optional --frozen-lockfile
|
||||
# Initialize Database, if it not already exists
|
||||
RUN pnpm run db
|
||||
|
||||
# Hinweis: better-sqlite3 neu bauen verursacht Fehler mit Node 23.10
|
||||
# npx ist bereits in Node.js integriert - kein zusätzlicher Install nötig
|
||||
# Build the application
|
||||
RUN pnpm run build
|
||||
|
||||
# Install tsx for running TypeScript files directly
|
||||
RUN pnpm add -D tsx
|
||||
|
||||
# Copy source code
|
||||
COPY . .
|
||||
|
||||
# Create database directory
|
||||
RUN mkdir -p db/
|
||||
|
||||
# Build the Next.js application
|
||||
RUN pnpm build || echo "Generate schema failed, but continuing..."
|
||||
|
||||
# Expose the port
|
||||
EXPOSE 3000
|
||||
|
||||
# Startup script with robust JSON fallback approach
|
||||
RUN echo '#!/bin/sh' > /app/startup.sh && \
|
||||
echo 'set -e' >> /app/startup.sh && \
|
||||
echo 'mkdir -p /app/db' >> /app/startup.sh && \
|
||||
echo 'echo "Starting application..."' >> /app/startup.sh && \
|
||||
echo 'echo "Konfiguriere DB-Verzeichnis..."' >> /app/startup.sh && \
|
||||
echo 'DB_FILE="/app/db/sqlite.db"' >> /app/startup.sh && \
|
||||
echo 'DB_JSON="/app/db/db.json"' >> /app/startup.sh && \
|
||||
echo 'if [ ! -f "$DB_FILE" ]; then' >> /app/startup.sh && \
|
||||
echo ' echo "Creating empty database file..."' >> /app/startup.sh && \
|
||||
echo ' touch "$DB_FILE"' >> /app/startup.sh && \
|
||||
echo 'fi' >> /app/startup.sh && \
|
||||
echo 'if [ ! -f "$DB_JSON" ]; then' >> /app/startup.sh && \
|
||||
echo ' echo "Creating empty JSON DB file (fallback)..."' >> /app/startup.sh && \
|
||||
echo ' echo "{}" > "$DB_JSON"' >> /app/startup.sh && \
|
||||
echo 'fi' >> /app/startup.sh && \
|
||||
echo 'chmod 666 "$DB_FILE"' >> /app/startup.sh && \
|
||||
echo 'chmod 666 "$DB_JSON"' >> /app/startup.sh && \
|
||||
echo 'chmod -R 777 /app/db' >> /app/startup.sh && \
|
||||
echo 'export DB_PATH=$DB_FILE' >> /app/startup.sh && \
|
||||
echo 'export DB_JSON_PATH=$DB_JSON' >> /app/startup.sh && \
|
||||
echo 'echo "Datenbank wird unter $DB_PATH verwendet"' >> /app/startup.sh && \
|
||||
echo 'echo "JSON Fallback unter $DB_JSON_PATH"' >> /app/startup.sh && \
|
||||
echo '' >> /app/startup.sh && \
|
||||
echo '# Try to rebuild better-sqlite3 for current platform, but continue if it fails' >> /app/startup.sh && \
|
||||
echo 'if [ ! -d "/app/node_modules/.pnpm/better-sqlite3@9.6.0/node_modules/better-sqlite3/build" ]; then' >> /app/startup.sh && \
|
||||
echo ' echo "SQLite Bindings nicht gefunden, versuche sie zu bauen..."' >> /app/startup.sh && \
|
||||
echo ' cd /app && CFLAGS="-fPIC" LDFLAGS="-fPIC" CXXFLAGS="-fPIC" npm_config_build_from_source=true npm_config_sqlite=/usr/local npm_config_sqlite_libname=sqlite3 pnpm rebuild better-sqlite3 || echo "SQLite Rebuild fehlgeschlagen - wird JSON-Fallback verwenden"' >> /app/startup.sh && \
|
||||
echo 'fi' >> /app/startup.sh && \
|
||||
echo '' >> /app/startup.sh && \
|
||||
echo 'echo "Führe Datenbank-Migration aus..."' >> /app/startup.sh && \
|
||||
echo 'NODE_ENV=production npx tsx ./src/server/db/migrate.ts || echo "SQLite Migration fehlgeschlagen - wird beim Neustart erneut versucht"' >> /app/startup.sh && \
|
||||
echo 'echo "Migration abgeschlossen"' >> /app/startup.sh && \
|
||||
echo '' >> /app/startup.sh && \
|
||||
echo 'echo "Starte Next.js Anwendung..."' >> /app/startup.sh && \
|
||||
echo 'if [ -d ".next" ]; then' >> /app/startup.sh && \
|
||||
echo ' NODE_OPTIONS="--no-warnings" pnpm start' >> /app/startup.sh && \
|
||||
echo 'else' >> /app/startup.sh && \
|
||||
echo ' echo "Build directory nicht gefunden, führe Build aus..."' >> /app/startup.sh && \
|
||||
echo ' NODE_OPTIONS="--no-warnings" pnpm build || echo "Build fehlgeschlagen - wird beim Neustart erneut versucht"' >> /app/startup.sh && \
|
||||
echo ' NODE_OPTIONS="--no-warnings" pnpm start || NODE_OPTIONS="--no-warnings" pnpm dev' >> /app/startup.sh && \
|
||||
echo 'fi' >> /app/startup.sh && \
|
||||
chmod +x /app/startup.sh
|
||||
|
||||
# Start the application
|
||||
CMD ["/app/startup.sh"]
|
||||
CMD ["/bin/sh", "-c", "if [ ! -f ./db/sqlite.db ]; then pnpm db; fi && pnpm start"]
|
||||
|
||||
Reference in New Issue
Block a user