256ff0814e
Build & Deploy / Build & Push Docker Image (push) Failing after 44s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m0s
Test / Marketplace Unit Tests (push) Failing after 4m51s
Test / Admin Unit Tests (push) Successful in 9m31s
Test / Dashboard Unit Tests (push) Successful in 9m37s
Test / API Integration Tests (push) Successful in 9m54s
- Remove apps/marketplace entirely - Create apps/homepage (port 3000): landing/marketing pages (home, features, pricing, platform-ops, review, legal) - Create apps/storefront (port 3004): vehicle browsing (explore) and renter account (dashboard, profile, notifications) - Duplicate shared components/libs into each app - Update homepage header nav: Home, Features, Pricing instead of Home, Explore - Fix all /explore cross-references in homepage to point to /features - Update docker-compose.dev.yml: new homepage and storefront services, remove marketplace - Update docker-compose.production.yml: split into homepage (main domain) and storefront (path-based routes) - Update Dockerfiles: EXPOSE 3004 instead of 3003 - Update root package.json scripts: homepage/storefront profiles, tests, prod scripts - Add docker-prod-up-homepage.sh and docker-prod-up-storefront.sh, remove marketplace script
60 lines
2.1 KiB
Docker
60 lines
2.1 KiB
Docker
FROM node:20-bookworm AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
RUN corepack enable && corepack prepare npm@10.5.0 --activate
|
|
|
|
COPY package.json package-lock.json turbo.json tsconfig.base.json ./
|
|
COPY apps ./apps
|
|
COPY packages ./packages
|
|
COPY config ./config
|
|
|
|
# These URLs are read by Next.js config during `next build`, so the production
|
|
# image must bake Docker-network service URLs instead of localhost defaults.
|
|
ARG API_INTERNAL_URL=http://api:4000/api/v1
|
|
ARG DASHBOARD_INTERNAL_URL=http://dashboard:3001
|
|
ARG ADMIN_INTERNAL_URL=http://admin:3002
|
|
|
|
# NEXT_PUBLIC_* vars must be present at build time — they are inlined into JS bundles
|
|
ARG NEXT_PUBLIC_API_URL
|
|
ARG NEXT_PUBLIC_MARKETPLACE_URL
|
|
ARG NEXT_PUBLIC_DASHBOARD_URL
|
|
ARG NEXT_PUBLIC_ADMIN_URL
|
|
ENV API_INTERNAL_URL=$API_INTERNAL_URL \
|
|
DASHBOARD_INTERNAL_URL=$DASHBOARD_INTERNAL_URL \
|
|
ADMIN_INTERNAL_URL=$ADMIN_INTERNAL_URL \
|
|
NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL \
|
|
NEXT_PUBLIC_MARKETPLACE_URL=$NEXT_PUBLIC_MARKETPLACE_URL \
|
|
NEXT_PUBLIC_DASHBOARD_URL=$NEXT_PUBLIC_DASHBOARD_URL \
|
|
NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL
|
|
|
|
RUN npm install
|
|
RUN npm run db:generate
|
|
RUN npm run build
|
|
|
|
FROM node:20-bookworm AS runner
|
|
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
RUN corepack enable && corepack prepare npm@10.5.0 --activate \
|
|
&& groupadd --system --gid 10001 app \
|
|
&& useradd --system --uid 10001 --gid app --home-dir /app --shell /usr/sbin/nologin app \
|
|
&& mkdir -p /var/lib/rentaldrivego/storage/public /var/lib/rentaldrivego/storage/private /tmp/rentaldrivego \
|
|
&& chown -R app:app /app /var/lib/rentaldrivego /tmp/rentaldrivego
|
|
|
|
COPY --from=builder --chown=app:app /app/package.json /app/package-lock.json /app/turbo.json /app/tsconfig.base.json ./
|
|
COPY --from=builder --chown=app:app /app/node_modules ./node_modules
|
|
COPY --from=builder --chown=app:app /app/apps ./apps
|
|
COPY --from=builder --chown=app:app /app/packages ./packages
|
|
COPY --chown=root:root docker/entrypoint.production.sh /usr/local/bin/rdg-entrypoint.sh
|
|
|
|
RUN chmod 755 /usr/local/bin/rdg-entrypoint.sh
|
|
|
|
ENTRYPOINT ["/usr/local/bin/rdg-entrypoint.sh"]
|
|
|
|
EXPOSE 3000 3001 3002 3004 4000
|
|
|
|
CMD ["npm", "run", "start", "--workspace", "@rentaldrivego/api"]
|