diff --git a/.dockerignore b/.dockerignore index cdfcde5..c3a30ab 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,7 +18,19 @@ producer/.gitignore producer/dist # Dashboard -dashboard/* +dashboard/node_modules +dashboard/.nuxt +dashboard/.output +dashboard/tests +dashboard/.env.example +dashboard/.env +dashboard/.gitignore +dashboard/ecosystem.config.cjs +dashboard/out.pdf +dashboard/timeline.report.txt +dashboard/Dockerfile +dashboard/vitest.config.ts +dashboard/vitest.setup.ts # Shared shared/node_modules diff --git a/dashboard/Dockerfile b/dashboard/Dockerfile index 918a7a1..f6a3712 100644 --- a/dashboard/Dockerfile +++ b/dashboard/Dockerfile @@ -1,7 +1,31 @@ -FROM node:21-alpine +ARG NODE_VERSION=21 + +FROM node:${NODE_VERSION}-alpine as base + +ENV NODE_ENV=production + +# Build stage + WORKDIR /home/app -COPY package.json pnpm-lock.yaml ./ -RUN npm install -g pnpm && pnpm install --prod --frozen-lockfile -COPY ./.output /home/app/dist + +FROM base as build + +COPY --link dashboard/package.json dashboard/pnpm-lock.yaml ./ +RUN npm install --production=false + +COPY --link dashboard/ ./ + +COPY --link shared/ /home/shared + +RUN npm run build +RUN npm prune + +# Final stage + +FROM base + +COPY --from=build /home/app /home/app + EXPOSE ${PORT} -CMD ["node", "dist/server/index.mjs"] \ No newline at end of file + +CMD [ "node", "/home/app/.output/server/index.mjs" ] \ No newline at end of file diff --git a/dashboard/package.json b/dashboard/package.json index fc341c9..cbec412 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -9,7 +9,8 @@ "preview": "nuxt preview", "postinstall": "nuxt prepare", "test": "vitest", - "docker-build": "pnpm run build && docker build -t litlyx-dashboard ." + "docker-build": "docker build -t litlyx-dashboard -f Dockerfile ../", + "docker-inspect": "docker run -it litlyx-dashboard sh" }, "dependencies": { "@nuxtjs/tailwindcss": "^6.12.0", diff --git a/docker-compose.yml b/docker-compose.yml index 7173af4..54b1e61 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,8 @@ services: MONGO_INITDB_ROOT_PASSWORD: litlyx ports: - 27017:27017 + volumes: + - mongo-data:/data/db cache: image: redis:alpine @@ -20,9 +22,9 @@ services: image: litlyx-producer:latest restart: always ports: - - "3000:3000" + - "3099:3099" environment: - PORT: "3000" + PORT: "3099" REDIS_URL: "redis://cache" REDIS_USERNAME: "default" REDIS_PASSWORD: "litlyx" @@ -45,10 +47,38 @@ services: REDIS_PASSWORD: "litlyx" STREAM_NAME: "lib-events" - # dashboard: - # image: litlyx-dashboard:latest - # restart: always - # ports: - # - "80:80" - # environment: - # PORT: "80" + dashboard: + image: litlyx-dashboard:latest + restart: always + ports: + - "3000:3000" + environment: + NUXT_PORT: "3000" + NUXT_MONGO_CONNECTION_STRING: 'mongodb://litlyx:litlyx@mongo:27017/SimpleMetrics?readPreference=primaryPreferred&authSource=admin' + + NUXT_REDIS_URL: "redis://cache" + NUXT_REDIS_USERNAME: "default" + NUXT_REDIS_PASSWORD: "litlyx" + + NUXT_AI_ORG: 'OPEN_AI_ORGANIZATION' + NUXT_AI_PROJECT: 'OPEN_AI_PROJECT' + NUXT_AI_KEY: 'OPEN_AI_KEY' + + # NUXT_EMAIL_SERVICE: "" + # NUXT_EMAIL_HOST: "" + # NUXT_EMAIL_USER: "" + # NUXT_EMAIL_PASS: "" + + NUXT_AUTH_JWT_SECRET: "litlyx_jwt_secret" + + NUXT_GOOGLE_AUTH_CLIENT_ID: "GOOGLE_AUTH_CLIENT_ID" + NUXT_GOOGLE_AUTH_CLIENT_SECRET: "GOOGLE_AUTH_CLIENT_SECRET" + + NUXT_STRIPE_SECRET_TEST: "STRIPE_SECRET_TEST" + NUXT_STRIPE_WH_SECRET_TEST: "STRIPE_WEBHOOK_SECRET_TEST" + + NUXT_STRIPE_SECRET: "STRIPE_SECRET" + NUXT_STRIPE_WH_SECRET: "STRIPE_WEBHOOK_SECRET" + +volumes: + mongo-data: