diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8382dba --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +node_modules +.git +.gitignore +*.md +.env* +Dockerfile +docker-compose*.yml +.dockerignore +backlog +dist +CLAUDE.md diff --git a/.gitignore b/.gitignore index 9a84a05..c365a08 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,6 @@ vite.config.ts.* # Environment variables (contains secrets) .env .env.local -.env.*.local \ No newline at end of file +.env.*.local +# Claude Code local instructions (symlink) +CLAUDE.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b5c43bf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node:20-alpine AS builder +WORKDIR /app +COPY package.json package-lock.json* ./ +RUN npm ci +COPY . . +RUN npm run build + +FROM node:20-alpine AS runner +WORKDIR /app +ENV NODE_ENV=production +COPY --from=builder /app/dist ./dist +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./ +EXPOSE 5000 +CMD ["node", "dist/index.js"] diff --git a/backlog/config.yml b/backlog/config.yml new file mode 100644 index 0000000..bd3be93 --- /dev/null +++ b/backlog/config.yml @@ -0,0 +1,15 @@ +project_name: "pwf-website-new" +default_status: "To Do" +statuses: ["To Do", "In Progress", "Done"] +labels: [] +milestones: [] +date_format: yyyy-mm-dd +max_column_width: 20 +auto_open_browser: true +default_port: 6420 +remote_operations: true +auto_commit: false +zero_padded_ids: 3 +bypass_git_hooks: false +check_active_branches: true +active_branch_days: 60 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ac8285c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +services: + pwf-prod: + build: . + container_name: pwf-prod + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.pwf.rule=Host(`pilateswithfadia.com`) || Host(`www.pilateswithfadia.com`)" + - "traefik.http.services.pwf.loadbalancer.server.port=5000" + networks: + - traefik-public + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:5000/"] + interval: 30s + timeout: 10s + retries: 3 + +networks: + traefik-public: + external: true