From 5ace03ea998646d96f35ecb49945e32ef548e7aa Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Fri, 9 Jan 2026 23:36:56 +0200 Subject: [PATCH] fix(server): Dockerfile --- .env.example | 7 --- docker-compose.prod.yml | 26 +-------- docker-compose.yml | 24 ++------- docker/mongo/Dockerfile | 1 - packages/server/.env.example | 7 --- packages/server/Dockerfile | 100 +++++++++++++++++++++++++++++++++++ 6 files changed, 105 insertions(+), 60 deletions(-) delete mode 100644 docker/mongo/Dockerfile create mode 100644 packages/server/Dockerfile diff --git a/.env.example b/.env.example index 1cdc87e6c..c650538c6 100644 --- a/.env.example +++ b/.env.example @@ -35,17 +35,10 @@ TENANT_DB_NAME_PERFIX=bigcapital_tenant_ BASE_URL=http://example.com JWT_SECRET=b0JDZW56RnV6aEthb0RGPXVEcUI -# Jobs MongoDB -MONGODB_DATABASE_URL=mongodb://localhost/bigcapital - # App proxy PUBLIC_PROXY_PORT=80 PUBLIC_PROXY_SSL_PORT=443 -# Agendash -AGENDASH_AUTH_USER=agendash -AGENDASH_AUTH_PASSWORD=123123 - # Sign-up restrictions SIGNUP_DISABLED=false SIGNUP_ALLOWED_DOMAINS= diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index a17276efd..b4f82a6f0 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -32,11 +32,9 @@ services: - '3000' links: - mysql - - mongo - redis depends_on: - mysql - - mongo - redis restart: on-failure networks: @@ -66,16 +64,9 @@ services: # Authentication - JWT_SECRET=${JWT_SECRET} - # MongoDB - - MONGODB_DATABASE_URL=mongodb://mongo/bigcapital - # Application - BASE_URL=${BASE_URL} - # Agendash - - AGENDASH_AUTH_USER=${AGENDASH_AUTH_USER} - - AGENDASH_AUTH_PASSWORD=${AGENDASH_AUTH_PASSWORD} - # Sign-up restrictions - SIGNUP_DISABLED=${SIGNUP_DISABLED} - SIGNUP_ALLOWED_DOMAINS=${SIGNUP_ALLOWED_DOMAINS} @@ -122,7 +113,7 @@ services: - S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY} - S3_ENDPOINT=${S3_ENDPOINT} - S3_BUCKET=${S3_BUCKET} - + # Stripe - STRIPE_PAYMENT_SECRET_KEY=${STRIPE_PAYMENT_SECRET_KEY} - STRIPE_PAYMENT_PUBLISHABLE_KEY=${STRIPE_PAYMENT_PUBLISHABLE_KEY} @@ -166,17 +157,6 @@ services: networks: - bigcapital_network - mongo: - container_name: bigcapital-mongo - restart: on-failure - build: ./docker/mongo - expose: - - '27017' - volumes: - - mongo:/var/lib/mongodb - networks: - - bigcapital_network - redis: container_name: bigcapital-redis restart: on-failure @@ -202,10 +182,6 @@ volumes: name: bigcapital_prod_mysql driver: local - mongo: - name: bigcapital_prod_mongo - driver: local - redis: name: bigcapital_prod_redis driver: local diff --git a/docker-compose.yml b/docker-compose.yml index a5c6e96e3..97ea97939 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,25 +24,13 @@ services: restart_policy: condition: unless-stopped - mongo: - build: ./docker/mongo - expose: - - '27017' - volumes: - - mongo:/var/lib/mongodb - ports: - - '27017:27017' - deploy: - restart_policy: - condition: unless-stopped - redis: build: context: ./docker/redis expose: - - "6379" + - '6379' ports: - - "6379:6379" + - '6379:6379' volumes: - redis:/data deploy: @@ -52,7 +40,7 @@ services: gotenberg: image: gotenberg/gotenberg:7 ports: - - "9000:3000" + - '9000:3000' # Volumes volumes: @@ -60,10 +48,6 @@ volumes: name: bigcapital_dev_mysql driver: local - mongo: - name: bigcapital_dev_mongo - driver: local - redis: name: bigcapital_dev_redis - driver: local \ No newline at end of file + driver: local diff --git a/docker/mongo/Dockerfile b/docker/mongo/Dockerfile deleted file mode 100644 index fe60f11b0..000000000 --- a/docker/mongo/Dockerfile +++ /dev/null @@ -1 +0,0 @@ -FROM mongo:5.0 \ No newline at end of file diff --git a/packages/server/.env.example b/packages/server/.env.example index 30101827f..2a48adf5a 100644 --- a/packages/server/.env.example +++ b/packages/server/.env.example @@ -35,17 +35,10 @@ TENANT_DB_NAME_PERFIX=bigcapital_tenant_ BASE_URL=http://example.com JWT_SECRET=b0JDZW56RnV6aEthb0RGPXVEcUI -# Jobs MongoDB -MONGODB_DATABASE_URL=mongodb://localhost/bigcapital - # App proxy PUBLIC_PROXY_PORT=80 PUBLIC_PROXY_SSL_PORT=443 -# Agendash -AGENDASH_AUTH_USER=agendash -AGENDASH_AUTH_PASSWORD=123123 - # Sign-up restrictions SIGNUP_DISABLED=false SIGNUP_ALLOWED_DOMAINS= diff --git a/packages/server/Dockerfile b/packages/server/Dockerfile new file mode 100644 index 000000000..3339a358a --- /dev/null +++ b/packages/server/Dockerfile @@ -0,0 +1,100 @@ +FROM node:18.16.0-alpine as build + +USER root + +ARG MAIL_HOST= \ + MAIL_USERNAME= \ + MAIL_PASSWORD= \ + MAIL_PORT= \ + MAIL_SECURE= \ + MAIL_FROM_NAME= \ + MAIL_FROM_ADDRESS= \ + # Database + DB_HOST= \ + DB_USER= \ + DB_PASSWORD= \ + DB_CHARSET= \ + # System database. + SYSTEM_DB_NAME= \ + SYSTEM_DB_PASSWORD= \ + SYSTEM_DB_USER= \ + SYSTEM_DB_HOST= \ + SYSTEM_DB_CHARSET= \ + # Tenant databases. + TENANT_DB_USER= \ + TENANT_DB_PASSWORD= \ + TENANT_DB_HOST= \ + TENANT_DB_NAME_PERFIX= \ + TENANT_DB_CHARSET= \ + # Authentication + JWT_SECRET= \ + # Application + BASE_URL= \ + # Sign-up restriction + SIGNUP_DISABLED= \ + SIGNUP_ALLOWED_DOMAINS= \ + SIGNUP_ALLOWED_EMAILS= + +ENV MAIL_HOST=$MAIL_HOST \ + MAIL_USERNAME=$MAIL_USERNAME \ + MAIL_PASSWORD=$MAIL_PASSWORD \ + MAIL_PORT=$MAIL_PORT \ + MAIL_SECURE=$MAIL_SECURE \ + MAIL_FROM_NAME=$MAIL_FROM_NAME \ + MAIL_FROM_ADDRESS=$MAIL_FROM_ADDRESS \ + # Database + DB_HOST=$DB_HOST \ + DB_USER=$DB_USER \ + DB_PASSWORD=$DB_PASSWORD \ + DB_CHARSET=$DB_CHARSET \ + # System database. + SYSTEM_DB_HOST=$SYSTEM_DB_HOST \ + SYSTEM_DB_USER=$SYSTEM_DB_USER \ + SYSTEM_DB_PASSWORD=$SYSTEM_DB_PASSWORD \ + SYSTEM_DB_NAME=$SYSTEM_DB_NAME \ + SYSTEM_DB_CHARSET=$SYSTEM_DB_CHARSET \ + # Tenant databases. + TENANT_DB_NAME_PERFIX=$TENANT_DB_NAME_PERFIX \ + TENANT_DB_HOST=$TENANT_DB_HOST \ + TENANT_DB_PASSWORD=$TENANT_DB_PASSWORD \ + TENANT_DB_USER=$TENANT_DB_USER \ + TENANT_DB_CHARSET=$TENANT_DB_CHARSET \ + # Authentication + JWT_SECRET=$JWT_SECRET \ + # Application + BASE_URL=$BASE_URL \ + # Sign-up restriction + SIGNUP_DISABLED=$SIGNUP_DISABLED \ + SIGNUP_ALLOWED_DOMAINS=$SIGNUP_ALLOWED_DOMAINS \ + SIGNUP_ALLOWED_EMAILS=$SIGNUP_ALLOWED_EMAILS + +# New Relic config file. +ENV NEW_RELIC_NO_CONFIG_FILE=true + +# Create app directory. +WORKDIR /app + +RUN chown node:node / + +# Install pnpm +RUN npm install -g pnpm + +# Copy application dependency manifests to the container image. +COPY --chown=node:node ./ ./ + +# Install application dependencies +RUN apk update +RUN apk add python3 build-base chromium + +# Set PYHTON env +ENV PYTHON=/usr/bin/python3 + +# Install packages dependencies for production. +RUN pnpm install + +COPY --chown=node:node ./packages/server ./packages/server + +# # Creates a "dist" folder with the production build +RUN pnpm run build:server --skip-nx-cache + +CMD [ "node", "./packages/server/build/index.js" ] \ No newline at end of file