mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 17:27:31 +00:00
docker bake files
This commit is contained in:
@@ -62,6 +62,14 @@ target "login-pnpm" {
|
||||
}
|
||||
}
|
||||
|
||||
target "login-build-base" {
|
||||
inherits = ["release"]
|
||||
dockerfile = "${DOCKERFILES_DIR}login-build-base.Dockerfile"
|
||||
contexts = {
|
||||
login-pnpm = "target:login-pnpm"
|
||||
}
|
||||
}
|
||||
|
||||
target "login-dev-base" {
|
||||
dockerfile = "${DOCKERFILES_DIR}login-dev-base.Dockerfile"
|
||||
contexts = {
|
||||
|
14
login/dockerfiles/login-build-base.Dockerfile
Normal file
14
login/dockerfiles/login-build-base.Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
# Base image for building login components with proper dependency caching
|
||||
FROM login-pnpm AS login-build-base
|
||||
|
||||
# Install root workspace dependencies first (best caching)
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --workspace-root --filter .
|
||||
|
||||
# Copy all package.json files for dependency resolution
|
||||
COPY packages/*/package.json ./packages/*/
|
||||
COPY apps/*/package.json ./apps/*/
|
||||
|
||||
# Install all dependencies in one layer for better caching
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile
|
14
login/dockerfiles/login-build-base.Dockerfile.dockerignore
Normal file
14
login/dockerfiles/login-build-base.Dockerfile.dockerignore
Normal file
@@ -0,0 +1,14 @@
|
||||
# .dockerignore for login-build-base
|
||||
**/.turbo
|
||||
**/.next
|
||||
**/node_modules
|
||||
**/dist
|
||||
**/build
|
||||
**/*.log
|
||||
**/.git
|
||||
**/coverage
|
||||
**/.nyc_output
|
||||
**/cypress/videos
|
||||
**/cypress/screenshots
|
||||
**/.env.local
|
||||
**/.env.*.local
|
@@ -1,6 +1,9 @@
|
||||
FROM typescript-proto-client AS login-client
|
||||
# Copy package.json first for better dependency caching
|
||||
COPY packages/zitadel-client/package.json ./packages/zitadel-client/
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --workspace-root --filter ./packages/zitadel-client
|
||||
# Copy source code
|
||||
COPY packages/zitadel-client ./packages/zitadel-client
|
||||
# Build the client (equivalent to turbo build for zitadel-client)
|
||||
RUN cd packages/zitadel-client && pnpm build
|
||||
|
@@ -1,3 +1,5 @@
|
||||
FROM login-pnpm AS login-dev-base
|
||||
RUN pnpm install --frozen-lockfile --prefer-offline --workspace-root --filter .
|
||||
# Install all workspace dependencies with caching
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --prefer-offline --workspace-root --filter .
|
||||
|
||||
|
@@ -1,7 +1,10 @@
|
||||
FROM login-dev-base AS login-lint
|
||||
# Copy linting configuration files first for better caching
|
||||
COPY .prettierrc .prettierignore ./
|
||||
COPY apps/login/package.json apps/login/
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --workspace-root --filter apps/login
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --workspace-root --filter apps/login
|
||||
# Copy source code
|
||||
COPY . .
|
||||
RUN pnpm lint && pnpm format
|
||||
# Run linting and formatting (equivalent to turbo lint)
|
||||
RUN cd apps/login && pnpm lint && pnpm exec prettier --check .
|
||||
|
@@ -6,5 +6,8 @@ RUN corepack enable && COREPACK_ENABLE_DOWNLOAD_PROMPT=0 corepack prepare pnpm@9
|
||||
apt-get update && apt-get install -y --no-install-recommends && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /build
|
||||
COPY turbo.json .npmrc package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
# Copy package manager configuration files first for better caching
|
||||
COPY .npmrc package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
# turbo.json is needed for workspace structure but not for turbo commands
|
||||
COPY turbo.json ./
|
||||
ENTRYPOINT ["pnpm"]
|
||||
|
@@ -1,17 +1,22 @@
|
||||
FROM login-client AS login-standalone-builder
|
||||
COPY apps/login ./apps/login
|
||||
RUN pnpm exec turbo prune @zitadel/login --docker
|
||||
WORKDIR /build/docker
|
||||
RUN cp -r ../out/json/* .
|
||||
# Copy package.json files first for better dependency caching
|
||||
COPY apps/login/package.json ./apps/login/
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile
|
||||
RUN cp -r ../out/full/* .
|
||||
RUN pnpm exec turbo run build:login:standalone
|
||||
pnpm install --frozen-lockfile --workspace-root --filter ./apps/login
|
||||
|
||||
# Copy source code
|
||||
COPY apps/login ./apps/login
|
||||
|
||||
# Build the standalone application
|
||||
RUN cd apps/login && \
|
||||
NEXT_PUBLIC_BASE_PATH=/ui/v2/login \
|
||||
NEXT_OUTPUT_MODE=standalone \
|
||||
pnpm build
|
||||
|
||||
FROM scratch AS login-standalone-out
|
||||
COPY --from=login-standalone-builder /build/docker/apps/login/.next/standalone /
|
||||
COPY --from=login-standalone-builder /build/docker/apps/login/.next/static /apps/login/.next/static
|
||||
COPY --from=login-standalone-builder /build/docker/apps/login/public /apps/login/public
|
||||
COPY --from=login-standalone-builder /build/apps/login/.next/standalone /
|
||||
COPY --from=login-standalone-builder /build/apps/login/.next/static /apps/login/.next/static
|
||||
COPY --from=login-standalone-builder /build/apps/login/public /apps/login/public
|
||||
|
||||
FROM node:20-alpine AS login-standalone
|
||||
WORKDIR /runtime
|
||||
@@ -21,9 +26,9 @@ RUN addgroup --system --gid 1001 nodejs && \
|
||||
RUN mkdir -p /.env-file && touch /.env-file/.env && chown -R nextjs:nodejs /.env-file
|
||||
COPY ./scripts/entrypoint.sh ./
|
||||
COPY ./scripts/healthcheck.js ./
|
||||
COPY --chown=nextjs:nodejs --from=login-standalone-builder /build/docker/apps/login/.next/standalone ./
|
||||
COPY --chown=nextjs:nodejs --from=login-standalone-builder /build/docker/apps/login/.next/static ./apps/login/.next/static
|
||||
COPY --chown=nextjs:nodejs --from=login-standalone-builder /build/docker/apps/login/public ./apps/login/public
|
||||
COPY --chown=nextjs:nodejs --from=login-standalone-builder /build/apps/login/.next/standalone ./
|
||||
COPY --chown=nextjs:nodejs --from=login-standalone-builder /build/apps/login/.next/static ./apps/login/.next/static
|
||||
COPY --chown=nextjs:nodejs --from=login-standalone-builder /build/apps/login/public ./apps/login/public
|
||||
USER nextjs
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
ENV PORT=3000
|
||||
|
@@ -1,6 +1,9 @@
|
||||
FROM login-client AS login-test-unit
|
||||
# Copy package.json first for better dependency caching
|
||||
COPY apps/login/package.json ./apps/login/
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --workspace-root --filter ./apps/login
|
||||
# Copy source code
|
||||
COPY apps/login ./apps/login
|
||||
RUN pnpm test:unit:standalone
|
||||
# Run unit tests (equivalent to turbo test:unit:standalone)
|
||||
RUN cd apps/login && pnpm test:unit
|
||||
|
@@ -1,6 +1,9 @@
|
||||
FROM login-pnpm AS typescript-proto-client
|
||||
# Copy package.json first for better dependency caching
|
||||
COPY packages/zitadel-proto/package.json ./packages/zitadel-proto/
|
||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||
pnpm install --frozen-lockfile --workspace-root --filter zitadel-proto
|
||||
# Copy source code
|
||||
COPY packages/zitadel-proto ./packages/zitadel-proto
|
||||
RUN pnpm generate
|
||||
# Generate proto files (equivalent to turbo generate)
|
||||
RUN cd packages/zitadel-proto && pnpm generate
|
||||
|
Reference in New Issue
Block a user