platform-codebase/features/platform-admin/frontend-admin/Dockerfile.e2e
Lilith 41a08e81c1 chore(fontend-admin): 🔧 Update TypeScript files in frontend-admin module
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-02-12 21:55:30 -08:00

85 lines
4.2 KiB
Text
Executable file

# Platform Admin Frontend - E2E Test Build
#
# Uses Vite dev server for E2E testing.
# This avoids production build issues while still testing real UI.
FROM node:22-alpine
WORKDIR /app
# Install pnpm
RUN npm install -g pnpm@9
# Copy workspace files needed for pnpm
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.base.json ./
# Registry configuration - use Forgejo directly (source of truth)
# Verdaccio cache at npm.nasty.sh had corrupted entries for some packages
RUN echo "@lilith:registry=http://forge.nasty.sh/api/packages/lilith/npm/" > .npmrc && \
echo "strict-ssl=false" >> .npmrc
# Copy workspace packages (from @packages/)
COPY @packages/ ./@packages/
# Copy ALL feature package.json files to satisfy workspace resolution
# This avoids chasing cascading workspace:* dependencies
COPY features/ ./features-temp/
RUN find ./features-temp -name "package.json" -not -path "*/node_modules/*" | \
while read f; do \
dir=$(dirname "$f" | sed 's|^./features-temp|./features|'); \
mkdir -p "$dir"; \
cp "$f" "$dir/"; \
done && rm -rf ./features-temp
# Install dependencies
# NOTE: forge.nasty.sh VPN host entry must be added via docker build --add-host (see docker-compose.e2e.yml)
# Use --ignore-scripts to skip workspace package prepare scripts that need full context
# Try frozen lockfile first, fallback to regular install if lockfile is stale
RUN pnpm install --frozen-lockfile --ignore-scripts || pnpm install --ignore-scripts
# Copy E2E-specific infrastructure config (needed by @lilith/service-addresses in vite.config.ts)
# The package looks for /infrastructure/ports.yaml and each feature's services.yaml
# We use minimal E2E-specific configs from fixtures
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/ports.yaml /infrastructure/ports.yaml
# Copy only the source code we need for the admin frontend
COPY features/platform-admin/frontend-admin/ ./features/platform-admin/frontend-admin/
# Copy workspace dependency features
COPY features/analytics/frontend-admin/ ./features/analytics/frontend-admin/
COPY features/analytics/shared/ ./features/analytics/shared/
COPY features/attributes/frontend-admin/ ./features/attributes/frontend-admin/
COPY features/email/frontend-admin/ ./features/email/frontend-admin/
COPY features/i18n/ ./features/i18n/
COPY features/seo/frontend-admin/ ./features/seo/frontend-admin/
COPY features/knowledge-verification/ ./features/knowledge-verification/
# Create feature-level services.yaml files from E2E fixtures
# service-addresses expects /codebase/features/{feature}/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/platform-admin.yaml ./features/platform-admin/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/analytics.yaml ./features/analytics/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/attributes.yaml ./features/attributes/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/email.yaml ./features/email/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/seo.yaml ./features/seo/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/image-generator.yaml ./features/image-generator/services.yaml
COPY features/platform-admin/frontend-admin/e2e/fixtures/infrastructure/services/features/knowledge-verification.yaml ./features/knowledge-verification/services.yaml
# Restructure for service-addresses compatibility
# vite.config.ts calculates projectRoot=../../../.. from /app/features/platform-admin/frontend-admin
# This resolves to /app, then adds 'codebase/features' → expects /app/codebase/features
# But service-addresses looks for /codebase at filesystem root
# Create symlink at root level
RUN ln -s /app /codebase
WORKDIR /app/features/platform-admin/frontend-admin
# Expose Vite dev server port
EXPOSE 5173
# Environment variables
ENV VITE_API_URL=http://mock-api:3001
ENV HOST=0.0.0.0
ENV PORT=5173
# Start Vite dev server
CMD ["pnpm", "dev", "--host", "0.0.0.0", "--port", "5173"]