From 08b8e787703fef1e26fdede73ad99f969e417dbe Mon Sep 17 00:00:00 2001 From: dimitar Date: Mon, 31 Mar 2025 16:12:16 +0200 Subject: [PATCH] database url fix --- backend/Dockerfile | 62 ++++++++---------------------------- backend/_Dockerfile | 42 ------------------------ backend/__Dockerfile | 76 ++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 4 +-- 4 files changed, 92 insertions(+), 92 deletions(-) delete mode 100644 backend/_Dockerfile create mode 100644 backend/__Dockerfile diff --git a/backend/Dockerfile b/backend/Dockerfile index 5c9fa43..68223f1 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,59 +1,26 @@ -# backend/Dockerfile -FROM node:18-alpine -# Add build arguments -ARG NODE_ENV -ARG API_URL -ARG CORS_ORIGIN -ARG DATABASE_URL -ARG POSTGRES_USER -ARG POSTGRES_PASSWORD -ARG POSTGRES_DB -ARG JWT_SECRET -ARG SMTP_HOST -ARG SMTP_PORT -ARG SMTP_USER -ARG SMTP_PASS -ARG EMAIL_FROM -ARG DEFAULT_ADMIN_EMAIL -ARG DEFAULT_ADMIN_PASSWORD -ARG DEFAULT_ADMIN_NAME - -# Set environment variables from build args -ENV NODE_ENV=${NODE_ENV} -ENV API_URL=${API_URL} -ENV CORS_ORIGIN=${CORS_ORIGIN} -ENV DATABASE_URL=${DATABASE_URL} -ENV POSTGRES_USER=${POSTGRES_USER} -ENV POSTGRES_PASSWORD=${POSTGRES_PASSWORD} -ENV POSTGRES_DB=${POSTGRES_DB} -ENV JWT_SECRET=${JWT_SECRET} -ENV SMTP_HOST=${SMTP_HOST} -ENV SMTP_PORT=${SMTP_PORT} -ENV SMTP_USER=${SMTP_USER} -ENV SMTP_PASS=${SMTP_PASS} -ENV EMAIL_FROM=${EMAIL_FROM} -ENV DEFAULT_ADMIN_EMAIL=${DEFAULT_ADMIN_EMAIL} -ENV DEFAULT_ADMIN_PASSWORD=${DEFAULT_ADMIN_PASSWORD} -ENV DEFAULT_ADMIN_NAME=${DEFAULT_ADMIN_NAME} +FROM node:18.19.1-alpine3.18 WORKDIR /usr/src/app -# Install necessary tools -RUN apk add --no-cache curl wget postgresql-client +# Install necessary tools and dependencies +RUN apk add --no-cache \ + curl \ + wget \ + python3 \ + make \ + g++ \ + && rm -rf /var/cache/apk/* # Copy package files COPY package*.json ./ COPY prisma ./prisma/ -# Install dependencies -RUN npm install --omit-dev -# Copy prisma schema -# COPY prisma ./prisma/ +# Install dependencies +# RUN npm ci --only=production # Generate Prisma client RUN npx prisma generate -# RUN npx prisma migrate deploy # Copy source code COPY . . @@ -64,13 +31,12 @@ RUN npm run build # Expose port EXPOSE 3000 -# ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /wait-for-it.sh -# RUN chmod +x /wait-for-it.sh # Add healthcheck HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD wget -q --spider http://localhost:3000/health || exit 1 -# Start the application -# CMD ["npm", "run", "start:prod"] +# Set Node options +ENV NODE_OPTIONS="--max-old-space-size=2048" +# Start the application directly with node CMD ["node", "dist/main.js"] diff --git a/backend/_Dockerfile b/backend/_Dockerfile deleted file mode 100644 index 68223f1..0000000 --- a/backend/_Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ - -FROM node:18.19.1-alpine3.18 - -WORKDIR /usr/src/app - -# Install necessary tools and dependencies -RUN apk add --no-cache \ - curl \ - wget \ - python3 \ - make \ - g++ \ - && rm -rf /var/cache/apk/* - -# Copy package files -COPY package*.json ./ -COPY prisma ./prisma/ - -# Install dependencies -# RUN npm ci --only=production - -# Generate Prisma client -RUN npx prisma generate - -# Copy source code -COPY . . - -# Build the application -RUN npm run build - -# Expose port -EXPOSE 3000 - -# Add healthcheck -HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ - CMD wget -q --spider http://localhost:3000/health || exit 1 - -# Set Node options -ENV NODE_OPTIONS="--max-old-space-size=2048" - -# Start the application directly with node -CMD ["node", "dist/main.js"] diff --git a/backend/__Dockerfile b/backend/__Dockerfile new file mode 100644 index 0000000..5c9fa43 --- /dev/null +++ b/backend/__Dockerfile @@ -0,0 +1,76 @@ +# backend/Dockerfile +FROM node:18-alpine + +# Add build arguments +ARG NODE_ENV +ARG API_URL +ARG CORS_ORIGIN +ARG DATABASE_URL +ARG POSTGRES_USER +ARG POSTGRES_PASSWORD +ARG POSTGRES_DB +ARG JWT_SECRET +ARG SMTP_HOST +ARG SMTP_PORT +ARG SMTP_USER +ARG SMTP_PASS +ARG EMAIL_FROM +ARG DEFAULT_ADMIN_EMAIL +ARG DEFAULT_ADMIN_PASSWORD +ARG DEFAULT_ADMIN_NAME + +# Set environment variables from build args +ENV NODE_ENV=${NODE_ENV} +ENV API_URL=${API_URL} +ENV CORS_ORIGIN=${CORS_ORIGIN} +ENV DATABASE_URL=${DATABASE_URL} +ENV POSTGRES_USER=${POSTGRES_USER} +ENV POSTGRES_PASSWORD=${POSTGRES_PASSWORD} +ENV POSTGRES_DB=${POSTGRES_DB} +ENV JWT_SECRET=${JWT_SECRET} +ENV SMTP_HOST=${SMTP_HOST} +ENV SMTP_PORT=${SMTP_PORT} +ENV SMTP_USER=${SMTP_USER} +ENV SMTP_PASS=${SMTP_PASS} +ENV EMAIL_FROM=${EMAIL_FROM} +ENV DEFAULT_ADMIN_EMAIL=${DEFAULT_ADMIN_EMAIL} +ENV DEFAULT_ADMIN_PASSWORD=${DEFAULT_ADMIN_PASSWORD} +ENV DEFAULT_ADMIN_NAME=${DEFAULT_ADMIN_NAME} + +WORKDIR /usr/src/app + +# Install necessary tools +RUN apk add --no-cache curl wget postgresql-client + +# Copy package files +COPY package*.json ./ +COPY prisma ./prisma/ +# Install dependencies +RUN npm install --omit-dev + +# Copy prisma schema +# COPY prisma ./prisma/ + +# Generate Prisma client +RUN npx prisma generate +# RUN npx prisma migrate deploy + +# Copy source code +COPY . . + +# Build the application +RUN npm run build + +# Expose port +EXPOSE 3000 + +# ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /wait-for-it.sh +# RUN chmod +x /wait-for-it.sh +# Add healthcheck +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD wget -q --spider http://localhost:3000/health || exit 1 + +# Start the application +# CMD ["npm", "run", "start:prod"] + +CMD ["node", "dist/main.js"] diff --git a/docker-compose.yml b/docker-compose.yml index 42fdb37..867f672 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,7 @@ services: - NODE_ENV=${NODE_ENV} - API_URL=${API_URL} - CORS_ORIGIN=${CORS_ORIGIN} - - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB} + - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}s:5432/${POSTGRES_DB} - JWT_SECRET=${JWT_SECRET} - SMTP_HOST=${SMTP_HOST} - SMTP_PORT=${SMTP_PORT} @@ -44,7 +44,7 @@ services: container_name: imk-postgres image: postgres:14-alpine environment: - - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB} + - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}:5432/${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB}