mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 17:57:33 +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" {
|
target "login-dev-base" {
|
||||||
dockerfile = "${DOCKERFILES_DIR}login-dev-base.Dockerfile"
|
dockerfile = "${DOCKERFILES_DIR}login-dev-base.Dockerfile"
|
||||||
contexts = {
|
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
|
FROM typescript-proto-client AS login-client
|
||||||
|
# Copy package.json first for better dependency caching
|
||||||
COPY packages/zitadel-client/package.json ./packages/zitadel-client/
|
COPY packages/zitadel-client/package.json ./packages/zitadel-client/
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||||
pnpm install --frozen-lockfile --workspace-root --filter ./packages/zitadel-client
|
pnpm install --frozen-lockfile --workspace-root --filter ./packages/zitadel-client
|
||||||
|
# Copy source code
|
||||||
COPY packages/zitadel-client ./packages/zitadel-client
|
COPY packages/zitadel-client ./packages/zitadel-client
|
||||||
|
# Build the client (equivalent to turbo build for zitadel-client)
|
||||||
RUN cd packages/zitadel-client && pnpm build
|
RUN cd packages/zitadel-client && pnpm build
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
FROM login-pnpm AS login-dev-base
|
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
|
FROM login-dev-base AS login-lint
|
||||||
|
# Copy linting configuration files first for better caching
|
||||||
COPY .prettierrc .prettierignore ./
|
COPY .prettierrc .prettierignore ./
|
||||||
COPY apps/login/package.json apps/login/
|
COPY apps/login/package.json apps/login/
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||||
pnpm install --frozen-lockfile --workspace-root --filter apps/login
|
pnpm install --frozen-lockfile --workspace-root --filter apps/login
|
||||||
|
# Copy source code
|
||||||
COPY . .
|
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 && \
|
apt-get update && apt-get install -y --no-install-recommends && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
WORKDIR /build
|
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"]
|
ENTRYPOINT ["pnpm"]
|
||||||
|
@@ -1,17 +1,22 @@
|
|||||||
FROM login-client AS login-standalone-builder
|
FROM login-client AS login-standalone-builder
|
||||||
COPY apps/login ./apps/login
|
# Copy package.json files first for better dependency caching
|
||||||
RUN pnpm exec turbo prune @zitadel/login --docker
|
COPY apps/login/package.json ./apps/login/
|
||||||
WORKDIR /build/docker
|
|
||||||
RUN cp -r ../out/json/* .
|
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||||
pnpm install --frozen-lockfile
|
pnpm install --frozen-lockfile --workspace-root --filter ./apps/login
|
||||||
RUN cp -r ../out/full/* .
|
|
||||||
RUN pnpm exec turbo run build:login:standalone
|
# 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
|
FROM scratch AS login-standalone-out
|
||||||
COPY --from=login-standalone-builder /build/docker/apps/login/.next/standalone /
|
COPY --from=login-standalone-builder /build/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/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/public /apps/login/public
|
||||||
|
|
||||||
FROM node:20-alpine AS login-standalone
|
FROM node:20-alpine AS login-standalone
|
||||||
WORKDIR /runtime
|
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
|
RUN mkdir -p /.env-file && touch /.env-file/.env && chown -R nextjs:nodejs /.env-file
|
||||||
COPY ./scripts/entrypoint.sh ./
|
COPY ./scripts/entrypoint.sh ./
|
||||||
COPY ./scripts/healthcheck.js ./
|
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/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/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/public ./apps/login/public
|
||||||
USER nextjs
|
USER nextjs
|
||||||
ENV HOSTNAME="0.0.0.0"
|
ENV HOSTNAME="0.0.0.0"
|
||||||
ENV PORT=3000
|
ENV PORT=3000
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
FROM login-client AS login-test-unit
|
FROM login-client AS login-test-unit
|
||||||
|
# Copy package.json first for better dependency caching
|
||||||
COPY apps/login/package.json ./apps/login/
|
COPY apps/login/package.json ./apps/login/
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||||
pnpm install --frozen-lockfile --workspace-root --filter ./apps/login
|
pnpm install --frozen-lockfile --workspace-root --filter ./apps/login
|
||||||
|
# Copy source code
|
||||||
COPY apps/login ./apps/login
|
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
|
FROM login-pnpm AS typescript-proto-client
|
||||||
|
# Copy package.json first for better dependency caching
|
||||||
COPY packages/zitadel-proto/package.json ./packages/zitadel-proto/
|
COPY packages/zitadel-proto/package.json ./packages/zitadel-proto/
|
||||||
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
|
||||||
pnpm install --frozen-lockfile --workspace-root --filter zitadel-proto
|
pnpm install --frozen-lockfile --workspace-root --filter zitadel-proto
|
||||||
|
# Copy source code
|
||||||
COPY packages/zitadel-proto ./packages/zitadel-proto
|
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