diff --git a/Dockerfile b/Dockerfile index d1f6e11..c93a629 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,22 @@ -FROM node:14 +FROM node:16 WORKDIR . -COPY package*.json . -RUN npm i --production +ARG DATABASE_URL +ARG GOOGLE_CLIENT_ID +ARG GOOGLE_CLIENT_SECRET +ARG AUTH_SECRET +ARG AUTH_URL +ARG NEXT_PUBLIC_BASE_URL +ARG NEXT_PUBLIC_MAPTILER_ACCESS_TOKEN +ARG SENDGRID_API_KEY +ARG SENDGRID_SENDER +COPY package*.json . +RUN npm ci --production +RUN npm i --save-dev typescript postcss ts-node COPY . . +RUN npm run db:generate RUN npm run build EXPOSE 3000 diff --git a/docker-compose.yml b/docker-compose.yml index 8645ab1..0d28e35 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,8 +2,21 @@ version: "3.6" services: app: - build: . - env_file: .env + build: + context: . + dockerfile: Dockerfile + args: + DATABASE_URL: ${DATABASE_URL} + GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} + GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET} + AUTH_SECRET: ${AUTH_SECRET} + AUTH_URL: ${AUTH_URL} + NEXT_PUBLIC_BASE_URL: ${NEXT_PUBLIC_BASE_URL} + NEXT_PUBLIC_MAPTILER_ACCESS_TOKEN: ${NEXT_PUBLIC_MAPTILER_ACCESS_TOKEN} + SENDGRID_API_KEY: ${SENDGRID_API_KEY} + SENDGRID_SENDER: ${SENDGRID_SENDER} + env_file: .env.production + image: computational_puzzles ports: - "3000:3000" volumes: @@ -17,7 +30,7 @@ services: image: postgres:9.6 volumes: - db_data:/var/lib/postgresql/data - env_file: .env + env_file: .env.production environment: POSTGRES_USER: computational_puzzles POSTGRES_PASSWORD: computational_puzzles # This is used to create development database, please change when migrate to production diff --git a/package.json b/package.json index e0dfdbd..6dcad7f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,10 @@ "lint": "next lint", "test": "jest --runInBand", "prettify": "npx prettier --write src/", - "db:push": "prisma db push" + "db:push": "prisma db push", + "db:generate": "prisma generate", + "migrate:prod": "prisma migrate deploy", + "db:seed": "ts-node prisma/seed/index.ts" }, "dependencies": { "@maptiler/geocoder": "^1.1.0", diff --git a/src/components/App/DisplayPuzzleInstances/index.tsx b/src/components/App/DisplayPuzzleInstances/index.tsx index bbae03d..d53c78e 100644 --- a/src/components/App/DisplayPuzzleInstances/index.tsx +++ b/src/components/App/DisplayPuzzleInstances/index.tsx @@ -8,6 +8,7 @@ import { Button } from '../../Global'; import { QRGenerator } from '../../App'; import toast from 'react-hot-toast'; import { getLinkToPuzzleInstance } from '../../../utils/getLinkToPuzzleInstance'; +import Router from 'next/router'; type DisplayPuzzleInstancesProps = { puzzlesList: PuzzleCustom[]; @@ -26,6 +27,11 @@ const DisplayPuzzleInstances = ({ setAllPuzzleInstances(await getAllPuzzleInstances()); }; + const handleRedirectToPuzzlePage = (puzzleInstanceId) => { + const linkToPuzzlePage = getLinkToPuzzleInstance(puzzleInstanceId); + Router.push(linkToPuzzlePage); + } + useEffect(() => { getPuzzleInstances(); }, [puzzlesList]); @@ -99,7 +105,7 @@ const DisplayPuzzleInstances = ({ />