Skip to content

Commit

Permalink
fix: docker image fix
Browse files Browse the repository at this point in the history
  • Loading branch information
dhruv-1001 committed Dec 5, 2024
1 parent 1a411f7 commit e87d883
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 155 deletions.
98 changes: 28 additions & 70 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,79 +1,37 @@
#FROM node:18.16.1-alpine
#
#COPY setup.sh
#
#RUN apk add --no-cache bash
#RUN npm i -g @nestjs/cli typescript ts-node
#
#COPY package*.json /tmp/app/
#RUN cd /tmp/app && npm install
#
#COPY . /usr/src/app
#RUN cp -a /tmp/app/node_modules /usr/src/app
#COPY ./wait-for-it.sh /opt/wait-for-it.sh
#COPY ./startup.dev.sh /opt/startup.dev.sh
#RUN sed -i 's/
#//g' /opt/wait-for-it.sh
#RUN sed -i 's/
#//g' /opt/startup.dev.sh
#
#WORKDIR /usr/src/app
#RUN cp env-example .env
#RUN npx prisma generate
#RUN npm run build
#
#CMD ["/opt/startup.dev.sh"]
#
#EXPOSE 3000
FROM node:18-slim as base
RUN apt-get update -y && apt-get install -y openssl


#FROM node:18.16.1-alpine
#
#WORKDIR /usr/src/app
#
#COPY . .
#
#RUN apt-get update && apt-get install -y curl && apt-get install -y git
#CMD /bin/bash
#COPY ./package*.json ./
#RUN ./setup.sh
#
#ENV NODE_ENV production
#CMD ["npm", "i"]
#CMD [ "npm", "run", "start:dev" ]
#
#EXPOSE 3000


FROM node:20.11.0-alpine

# Set the working directory
WORKDIR /usr/src/app

# Install curl and git using apk
RUN apk update && apk add --no-cache curl git

RUN #npm config set registry http://registry.npmjs.org/

# Copy package files first for better caching of npm install
COPY ./package*.json ./

# Install dependencies
FROM base AS install
WORKDIR /app
COPY package*.json ./
RUN npm install

# Copy the rest of the application code
FROM base as build
WORKDIR /app
COPY prisma ./prisma/
COPY --from=install /app/node_modules ./node_modules
RUN npx prisma generate
COPY . .
RUN npm run build

# Convert setup.sh to Unix-style line endings (LF)
FROM base as data
WORKDIR /app
COPY --from=install /app/node_modules ./node_modules
COPY . .
RUN sed -i 's/\r$//' ./setup.sh


# Run any additional setup script
RUN chmod +x ./setup.sh
RUN ./setup.sh

# Set environment variable
ENV NODE_ENV production

# Start the application
CMD ["npm", "run", "start:dev"]
FROM base
WORKDIR /app
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
COPY --from=build /app/package*.json ./
COPY --from=build /app/prisma ./prisma
COPY --from=data /app/db.mmdb ./db.mmdb
COPY --from=data /app/src/geojson-data ./src/geojson-data
COPY ./src ./src
COPY tsconfig.json ./tsconfig.json
EXPOSE 3000

CMD ["npm", "run", "migrate:ingest:start:prod"]
77 changes: 6 additions & 71 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,74 +1,9 @@
services:
fusionauth:
image: fusionauth/fusionauth-app:latest
depends_on:
postgres:
condition: service_healthy
environment:
DATABASE_URL: jdbc:postgresql://postgres:5432/fusionauth
DATABASE_ROOT_USERNAME: ${POSTGRES_USER}
DATABASE_ROOT_PASSWORD: ${POSTGRES_PASSWORD}
DATABASE_USERNAME: ${DATABASE_USERNAME}
DATABASE_PASSWORD: ${DATABASE_PASSWORD}
FUSIONAUTH_APP_MEMORY: ${FUSIONAUTH_APP_MEMORY}
FUSIONAUTH_APP_RUNTIME_MODE: ${FUSIONAUTH_APP_RUNTIME_MODE}
FUSIONAUTH_APP_URL: http://fusionauth:9011
FUSIONAUTH_APP_KICKSTART_FILE: /usr/local/fusionauth/kickstarts/kickstart.json
env_file:
- ./env-example
volumes:
- fa-config:/usr/local/fusionauth/config
- ./kickstart:/usr/local/fusionauth/kickstarts
networks:
- default
restart: unless-stopped
ports:
- 9011:9011

postgres:
image: postgres:15.3-alpine
geoquery:
build:
context: .
dockerfile: Dockerfile
ports:
- ${DATABASE_PORT}:5432
volumes:
- ./.data/db:/var/lib/postgresql/data
- "3000:3000"
environment:
POSTGRES_USER: ${DATABASE_USERNAME}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
POSTGRES_DB: ${DATABASE_NAME}
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 5s
timeout: 5s
retries: 5

shadow-postgres:
image: postgres:15.3-alpine
ports:
- ${SHADOW_DATABASE_PORT}:5432
volumes:
- ./.data/shadow-db:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${SHADOW_DATABASE_USERNAME}
POSTGRES_PASSWORD: ${SHADOW_DATABASE_PASSWORD}
POSTGRES_DB: ${SHADOW_DATABASE_NAME}

cache:
image: redis:6.2-alpine
restart: always
ports:
- '${CACHE_PORT}:6379'
command: redis-server --save 20 1
volumes:
- cache:/data

# api:
# build:
# context: .
# dockerfile: Dockerfile
# ports:
# - 3000:3000
volumes:
fa-config:
cache:
networks:
default:
DATABASE_URL: postgresql://admin:[email protected]:5555/gis
9 changes: 8 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"start:dev": "stencil start --watch",
"start:debug": "stencil start --debug --watch",
"start:prod": "NODE_ENV=production node dist/main",
"migrate:ingest:start:prod": "npx ts-node src/scripts/ingestors/state.geojson.ts && npx ts-node src/scripts/ingestors/district.geojson.ts && npx ts-node src/scripts/ingestors/subdistrict.geojson.ts && npm run migrate:start:prod",
"migrate:start:prod": "npx prisma migrate deploy && npm run start:prod",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
Expand Down Expand Up @@ -41,7 +43,12 @@
"multer": "^1.4.5-lts.1",
"reflect-metadata": "^0.1.13",
"request-ip": "^3.3.0",
"rxjs": "^7.8.1"
"rxjs": "^7.8.1",
"ts-jest": "^29.1.0",
"ts-loader": "^9.4.3",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.1.3"
},
"devDependencies": {
"@nestjs/testing": "^10.0.0",
Expand Down
5 changes: 1 addition & 4 deletions setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,4 @@ cd ../..

# Updating geoJSON files through script to make them usable in src
cd ./scripts
npx ts-node parse.geojson.ts
npx ts-node ingestors/state.geojson.ts
npx ts-node ingestors/district.geojson.ts
npx ts-node ingestors/subdistrict.geojson.ts
npx ts-node parse.geojson.ts
26 changes: 17 additions & 9 deletions src/modules/place/place.service.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Injectable, Logger } from "@nestjs/common";
import { HttpException, HttpStatus, Injectable, Logger } from "@nestjs/common";
import { CreatePlaceDto, SearchPlaceDto } from "./dto/place.dto";
import { PrismaService } from "../prisma/prisma.service";

Expand All @@ -12,12 +12,16 @@ export class PlaceService {
const { name, type, tag, lat, lon } = createPlaceDto;
const point = `ST_SetSRID(ST_MakePoint(${lon}, ${lat}), 4326)`;
this.logger.debug(`Adding place ${createPlaceDto}`)
return this.prisma.$executeRawUnsafe(
`INSERT INTO "Place" (name, type, tag, location) VALUES ($1, $2, $3, ${point})`,
name,
type,
tag,
);
try {
return this.prisma.$executeRawUnsafe(
`INSERT INTO "Place" (name, type, tag, location) VALUES ($1, $2, $3, ${point})`,
name,
type,
tag,
);
} catch (error) {
throw new HttpException('Error adding places', HttpStatus.INTERNAL_SERVER_ERROR);
}
}

async searchPlaces(searchPlaceDto: SearchPlaceDto): Promise<any> {
Expand Down Expand Up @@ -46,7 +50,11 @@ export class PlaceService {
query += ` AND type ILIKE '%${type}%'`;
}

// Execute the query
return this.prisma.$queryRawUnsafe(query);
try {
// Execute the query
return this.prisma.$queryRawUnsafe(query);
} catch (error) {
throw new HttpException('Error querying database', HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}

0 comments on commit e87d883

Please sign in to comment.