Add Docker configuration for deployment
- Dockerfile with multi-stage build (builder + runner) - docker-compose.yml with Traefik labels - Enable standalone output in Next.js config - Add public directory placeholder 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
948e9c9c05
commit
661f5fa601
|
|
@ -0,0 +1,41 @@
|
|||
# Build stage
|
||||
FROM node:20-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy package files
|
||||
COPY package*.json ./
|
||||
|
||||
# Install dependencies
|
||||
RUN npm ci
|
||||
|
||||
# Copy source code
|
||||
COPY . .
|
||||
|
||||
# Build the application
|
||||
RUN npm run build
|
||||
|
||||
# Production stage
|
||||
FROM node:20-alpine AS runner
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
# Create non-root user
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
|
||||
# Copy built assets
|
||||
COPY --from=builder /app/public ./public
|
||||
COPY --from=builder /app/.next/standalone ./
|
||||
COPY --from=builder /app/.next/static ./.next/static
|
||||
|
||||
USER nextjs
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
ENV PORT=3000
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
project_name: "Nusqool Website Replica"
|
||||
default_status: "To Do"
|
||||
statuses: ["To Do", "In Progress", "Done"]
|
||||
labels: []
|
||||
milestones: []
|
||||
date_format: yyyy-mm-dd
|
||||
max_column_width: 20
|
||||
default_editor: "nvim"
|
||||
auto_open_browser: true
|
||||
default_port: 6420
|
||||
remote_operations: true
|
||||
auto_commit: false
|
||||
bypass_git_hooks: false
|
||||
check_active_branches: true
|
||||
active_branch_days: 30
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
id: task-1
|
||||
title: Finish Nusqool website replica
|
||||
status: To Do
|
||||
assignee: []
|
||||
created_date: '2025-12-26 15:31'
|
||||
labels: []
|
||||
dependencies: []
|
||||
priority: medium
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Complete the Nusqool.com website replica with all remaining features and polish.
|
||||
|
||||
Current state:
|
||||
- Basic structure and all sections implemented
|
||||
- Responsive navigation with mobile menu
|
||||
- Custom color palette and typography
|
||||
- Placeholder images (need real photos)
|
||||
|
||||
Remaining work:
|
||||
- Add actual images from original site or new photos
|
||||
- Implement working links for all navigation items
|
||||
- Add Calendly booking integration
|
||||
- Create subpages (About Thu, TRE, Coaching, etc.)
|
||||
- Add animations and micro-interactions
|
||||
- Implement newsletter signup backend
|
||||
- Test and optimize for all devices
|
||||
- Deploy to production
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #1 Real images added to all sections
|
||||
- [ ] #2 All navigation links functional
|
||||
- [ ] #3 Subpages created for main menu items
|
||||
- [ ] #4 Newsletter signup connected to backend
|
||||
- [ ] #5 Deployed and accessible online
|
||||
<!-- AC:END -->
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
services:
|
||||
nusqool-staging:
|
||||
build: .
|
||||
container_name: nusqool-staging
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.nusqool-staging.rule=Host(`nusqool-staging.jeffemmett.com`)"
|
||||
- "traefik.http.services.nusqool-staging.loadbalancer.server.port=3000"
|
||||
networks:
|
||||
- traefik-public
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import type { NextConfig } from "next";
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
output: "standalone",
|
||||
images: {
|
||||
domains: ["images.squarespace-cdn.com"],
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue