diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..03837ca --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +# ignore every node_modules of both projects +**/node_modules \ No newline at end of file diff --git a/api.Dockerfile b/api.Dockerfile new file mode 100644 index 0000000..2ff6cee --- /dev/null +++ b/api.Dockerfile @@ -0,0 +1,9 @@ +FROM node:20.11.1-alpine3.19 as api-stage +WORKDIR /usr/src/app +COPY apps/fox-deck-api/package*.json ./ +RUN npm ci --prefer-offline --no-audit --progress=false +COPY apps/fox-deck-api/ . +COPY apps/fox-deck-api/.env.example /usr/src/app/.env +RUN npm run prisma:migrate +EXPOSE 3000 +CMD ["npm", "run", "start:dev"] diff --git a/app.Dockerfile b/app.Dockerfile new file mode 100644 index 0000000..bba94a6 --- /dev/null +++ b/app.Dockerfile @@ -0,0 +1,11 @@ +FROM node:20.11.1-alpine3.19 as build-stage +WORKDIR /app +COPY apps/fox-deck-app/package*.json ./ +RUN npm install --prefer-offline --no-audit --progress=false +COPY apps/fox-deck-app/ . +RUN npm run build +FROM nginx:alpine as production-stage +COPY --from=build-stage /app/dist /usr/share/nginx/html +RUN rm /etc/nginx/conf.d/default.conf +COPY apps/fox-deck-app/nginx.conf /etc/nginx/conf.d/ +EXPOSE 80 \ No newline at end of file diff --git a/apps/fox-deck-api/package-lock.json b/apps/fox-deck-api/package-lock.json index c3cdb20..8c33356 100644 --- a/apps/fox-deck-api/package-lock.json +++ b/apps/fox-deck-api/package-lock.json @@ -32,6 +32,7 @@ "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", + "@types/bcrypt": "^5.0.2", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", "@types/node": "^20.3.1", @@ -2510,6 +2511,15 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/bcrypt": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.2.tgz", + "integrity": "sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", diff --git a/apps/fox-deck-api/package.json b/apps/fox-deck-api/package.json index 085b2d7..81e3e40 100644 --- a/apps/fox-deck-api/package.json +++ b/apps/fox-deck-api/package.json @@ -45,6 +45,7 @@ "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", + "@types/bcrypt": "^5.0.2", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", "@types/node": "^20.3.1", diff --git a/apps/fox-deck-app/nginx.conf b/apps/fox-deck-app/nginx.conf new file mode 100644 index 0000000..395d374 --- /dev/null +++ b/apps/fox-deck-app/nginx.conf @@ -0,0 +1,17 @@ +server { + listen 80; + + location /api/ { + proxy_pass http://fox-deck-api:3000/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } + + location / { + root /usr/share/nginx/html; + try_files $uri $uri/ /index.html; + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..573e2bf --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.8' + +services: + fox-deck-app: + build: + context: . + dockerfile: app.Dockerfile + ports: + - "80:80" + fox-deck-api: + build: + context: . + dockerfile: api.Dockerfile + ports: + - "3000:3000" \ No newline at end of file