FROM ubuntu: jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=%DAYTONA_BASE_API_URL%/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
FROM ubuntu: jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=%DAYTONA_BASE_API_URL%/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
# Dependency and build artifacts node_modules/ dist/ yarn.lock .cache/ .eslintrc .next/ out/ .coverage/ coverage/ *.log *.tmp *.swp .DS_Store # IDEs and editors .vscode/ .idea/ *.sw? files # OS files Thumbs.db # Nx / Workspace **/node_modules/ **/dist/
Concerns: FROM line has a space after the colon: 'ubuntu: jammy-20260509' should be 'ubuntu:jammy-20260509'. This will cause a docker build syntax error., VITE_API_URL is assigned with Windows-style percent expansion 'VITE_API_URL=%DAYTONA_BASE_API_URL%/api' which will not expand on Linux and may break runtime configuration.
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=${DAYTONA_BASE_API_URL}/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
# Dependency and build artifacts node_modules/ dist/ yarn.lock .cache/ .eslintrc .next/ out/ .coverage/ coverage/ *.log *.tmp *.swp .DS_Store # IDEs and editors .vscode/ .idea/ *.sw? files # OS files Thumbs.db # Nx / Workspace **/node_modules/ **/dist/
Concerns: FROM ubuntu: jammy-20260509 AS daytona has a space after the colon which makes the Dockerfile syntax invalid; should be 'FROM ubuntu:jammy-20260509 AS daytona'., RUN ... VITE_API_URL=%DAYTONA_BASE_API_URL%/api ... uses Windows-style %VAR% syntax instead of Linux variable expansion (e.g., $DAYTONA_BASE_API_URL or ${DAYTONA_BASE_API_URL}); this will not substitute at build time., Other potential issues: the build relies on NX and specific repo structure; if DAYTONA_BASE_API_URL is not defined or the base image tag is unavailable, the build will fail.FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=${DAYTONA_BASE_API_URL}/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Concerns: FROM line has invalid syntax: space after the colon ('FROM ubuntu: jammy-20260509 AS daytona'), Dashboard build step uses Windows-style environment variable syntax (%DAYTONA_BASE_API_URL%/api) which is not valid in Linux; likely causes build failure or incorrect config, Daytona API build line relies on DAYTONA_BASE_API_URL without a proper Linux expansion (should use $DAYTONA_BASE_API_URL with ENV set), risking empty or incorrect VITE_API_URLFROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=$DAYTONA_BASE_API_URL/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Concerns: Syntax error in FROM line: 'FROM ubuntu: jammy-20260509 AS daytona' contains a space after the colon; should be 'FROM ubuntu:jammy-20260509 AS daytona'., Ambiguous or potentially invalid build-time env substitution: 'VITE_API_URL=%DAYTONA_BASE_API_URL%/api' uses Windows-style %VAR% syntax which won't be substituted by Bash in Linux during build., No explicit EXPOSE directive for port 3000; while not strictly required, it’s common to expose the port used by the API., The healthcheck and smoke tests assume the API serves /api/config on port 3000; if the API changes its paths or port, smoke tests may fail as written.
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=$DAYTONA_BASE_API_URL/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
EXPOSE 3000
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Concerns: FROM instruction has a syntax error: there is a space after the colon in 'FROM ubuntu: jammy-20260509 AS daytona' which is invalid. It should be 'FROM ubuntu:jammy-20260509 AS daytona'., Potential runtime/config issues: the RUN line that sets VITE_API_URL uses Windows-style percent syntax (%DAYTONA_BASE_API_URL%) which will not substitute in a Linux shell; this may cause a broken build or misconfigured dashboard build., Healthcheck and entrypoint imply a built/started API on port 3000, but if the build fails or the server isn’t started due to the above issues, the healthcheck will fail. The container may not be usable as-is.
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=$DAYTONA_BASE_API_URL/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
EXPOSE 3000
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Concerns: FROM line contains a space after the colon (FROM ubuntu: jammy-20260509 AS daytona), which is invalid syntax for Dockerfiles., Potential environment variable usage for VITE_API_URL uses Windows-style %VAR% syntax in a Linux shell, which may not substitute as intended., If the build context expects files like apps/api/ and libs/... to exist, ensure they are present in the repo; otherwise the build will fail.
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=${DAYTONA_BASE_API_URL}/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
EXPOSE 3000
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Concerns: FROM line has invalid syntax due to a space after the colon: 'FROM ubuntu: jammy-20260509 AS daytona' should have no space after the colon (e.g., 'FROM ubuntu:jammy-20260509 AS daytona')., The RUN line 'VITE_API_URL=%DAYTONA_BASE_API_URL%/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream' uses Windows-style environment variable syntax (%VAR%) which is not expanded in Linux shells and will likely produce an invalid configuration at build time., There are potential follow-on risks: the build outputs and the healthcheck assume the API binds to port 3000 and the built artifacts exist under dist/apps/api, but the invalid FROM line will cause the image to fail to build before these are verified.
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN bash -lc 'VITE_API_URL="$DAYTONA_BASE_API_URL/api" yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream'
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
EXPOSE 3000
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Summary (under 1500 chars) - Exact error message and exit code: - ERROR: failed to calculate checksum of ref 4ff19f4d-ebba-4433-930a-fce245b8c5fa::f0g8rewxdw6kedsw9arbjyif2: "/yarn.lock": not found - Also observed: failed to solve: failed to compute cache key: failed to calculate checksum of ref 4ff19f4d-ebba-4433-930a-fce245b8c5fa::f0g8rewxdw6kedsw9arbjyif2: "/yarn.lock": not found - Exit code: not shown in log - Failing command/step: - [ 6/18] COPY package.json yarn.lock .yarnrc.yml ./ - Missing packages or files mentioned: - yarn.lock not found - CopyIgnoredFile warning: Attempting to Copy file "yarn.lock" that is excluded by .dockerignore (line 19) - Version mismatch information: - Base image: ubuntu:jammy-20260509 - Node setup attempted: curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs - No explicit version mismatch detected; issue stems from missing yarn.lock due to .dockerignore - Root cause (implied): - yarn.lock is excluded by .dockerignore, yet the Dockerfile COPY attempts to bring yarn.lock into the build context, resulting in a missing file during checksum/cache key computation - Quick fixes: - Remove yarn.lock from .dockerignore or adjust to allow copying when needed - Ensure yarn.lock exists in the build context - Alternatively modify the Dockerfile to copy only existing files or add conditional logic for optional files - Confirm that the repository includes yarn.lock if your workflow requires Yarn caching
# Dependency and build artifacts node_modules/ dist/ yarn.lock .cache/ .eslintrc .next/ out/ .coverage/ coverage/ *.log *.tmp *.swp .DS_Store # IDEs and editors .vscode/ .idea/ *.sw? files # OS files Thumbs.db # Nx / Workspace **/node_modules/ **/dist/
Summary:
- Exact error message and exit code
- Error: "ERROR: failed to build: failed to solve: failed to compute cache key: failed to calculate checksum of ref 4ff19f4d-ebba-4433-930a-fce245b8c5fa::izrdq5s52kpim4jos89x0j9in: \"/yarn.lock\": not found"
- Exit code: non-zero (build failed)
- Failing command/step
- Step: [ 6/18] COPY package.json yarn.lock .yarnrc.yml ./
- Missing packages or files mentioned
- yarn.lock not found ("/yarn.lock")
- Note: yarn.lock is excluded by .dockerignore (line 19), as indicated by the CopyIgnoredFile warning
- Version mismatch info
- None present in the log.# Dependency and build artifacts node_modules/ dist/ yarn.lock .cache/ .eslintrc .next/ out/ .coverage/ coverage/ *.log *.tmp *.swp .DS_Store # IDEs and editors .vscode/ .idea/ *.sw? files # OS files Thumbs.db # Nx / Workspace **/node_modules/ **/dist/
# Dependency and build artifacts node_modules/ dist/ .cache/ .eslintrc .next/ out/ .coverage/ coverage/ *.log *.tmp *.swp .DS_Store # IDEs and editors .vscode/ .idea/ *.sw? files # OS files Thumbs.db # Nx / Workspace **/node_modules/ **/dist/
- Exact error message and exit code
- curl: (77) error setting certificate file: /etc/ssl/certs/ca-certificates.crt
- E: Unable to locate package nodejs
- The build failed with exit code: 100
- The failure is shown as:
ERROR: failed to build: failed to solve: process "/bin/sh -c curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
- Failing command/step
- [ 3/18] RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs && rm -rf /var/lib/apt/lists/*
- Missing packages or files mentioned
- Node.js package not found: E: Unable to locate package nodejs
- Curl TLS certificate error: curl cannot set certificate file due to missing/invalid CA certificates at /etc/ssl/certs/ca-certificates.crt
- Version mismatch info
- Attempted to fetch and run NodeSource setup for Node.js 24 (setup_24.x) on an Ubuntu jammy base image; TLS/cert issue prevents fetching the setup script, leading to the subsequent missing nodejs package.FROM node:24-slim AS daytona
ENV CI=true
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN bash -lc 'VITE_API_URL="$DAYTONA_BASE_API_URL/api" yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream'
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
EXPOSE 3000
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt)
RUN apt-get update && \
apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24 (required by the build tooling)
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
# Enable Yarn via Corepack (Berry workspace)
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer: install dependencies
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source (monorepo)
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Library dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build inputs for the dashboard build use DAYTONA_BASE_API_URL at build time
ARG DAYTONA_BASE_API_URL
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
# Build API first (monorepo API)
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard (dashboard uses DAYTONA_BASE_API_URL for its API URL during build)
RUN VITE_API_URL=${DAYTONA_BASE_API_URL}/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
EXPOSE 3000
ENTRYPOINT ["node", "dist/apps/api/main.js"]
node_modules/ dist/ dist-*/ *.log .env .env.local .DS_Store .vscode/ .idea/ *.swp *.swo **/*.tsbuildinfo
Build timed out after 600s
Build timed out after 600s
# Multi-stage build: builder uses Node image to compile, final uses Ubuntu runtime
# Builder stage: Node-based image for fast builds
FROM node:24-slim AS builder
ENV CI=true
# Build arguments (optional): DAYTONA_BASE_API_URL is used to configure dashboard at build time
ARG DAYTONA_BASE_API_URL
ARG VERSION
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
ENV DAYTONA_BASE_API_URL_VALUE=${DAYTONA_BASE_API_URL}
ENV VERSION=${VERSION}
# Enable corepack (yarn) and install dependencies
RUN corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build API first (production)
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard; DAYTONA_BASE_API_URL is used to set VITE_API_URL during build
RUN VITE_API_URL=${DAYTONA_BASE_API_URL:-}/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
# Runtime stage
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install runtime dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24 (required for running the app)
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
WORKDIR /daytona
# Copy built artifacts from builder
COPY --from=builder /daytona/dist /daytona/dist
COPY --from=builder /daytona/node_modules /daytona/node_modules
COPY --from=builder /daytona/package.json /daytona/package.json
# Expose port and set entrypoint
EXPOSE 3000
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Build timed out after 600s
# Multi-stage build: builder uses Node image to compile API, final uses Ubuntu runtime
# Builder stage: Node-based image for fast builds
FROM node:24-slim AS builder
ENV CI=true
# Build arguments (optional): DAYTONA_BASE_API_URL is used to configure dashboard at build time
ARG DAYTONA_BASE_API_URL
ARG VERSION
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
ENV VERSION=${VERSION}
# Enable corepack (yarn) and install dependencies
RUN corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source (only API for lean build)
COPY apps/api/ apps/api/
# Library dependencies used by API
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build API first (production)
RUN yarn nx build api --configuration=production --nxBail=true
# Runtime stage
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install runtime dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24 (required for running the app)
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
WORKDIR /daytona
# Copy built artifacts from builder
COPY --from=builder /daytona/dist /daytona/dist
COPY --from=builder /daytona/node_modules /daytona/node_modules
COPY --from=builder /daytona/package.json /daytona/package.json
# Expose port and set entrypoint
EXPOSE 3000
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Build timed out after 600s
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install dependencies (apt-based)
RUN apt-get update && \
apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24 (required by the build tooling)
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
WORKDIR /daytona
# Yarn caching layer: install dependencies
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Library dependencies used by API and Dashboard
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ARG DAYTONA_BASE_API_URL
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
# Build API first (production)
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard (production) - uses DAYTONA_BASE_API_URL for API endpoint during build
RUN DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL} yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
EXPOSE 3000
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Concerns - DAYTONA_BASE_API_URL not provided at build time may make dashboard config incomplete or fail. - Healthcheck endpoint /api/config is assumed; ensure app exposes this in production. - The smoke test starts the server; ensure the process is terminated after the check to avoid stray processes in repeated runs. Build error - Instance: default, docker driver - Dockerfile steps of note: - #9 COPY package.json yarn.lock .yarnrc.yml ./ - #10 RUN yarn install --immutable - Error: /bin/sh: 1: yarn: not found - Build failure: Dockerfile:20 RUN yarn install --immutable - The log shows: /bin/sh: 1: yarn: not found - Exit code: 127 - Context: Ubuntu jammy-20260509 base image; Node setup via curl https://deb.nodesource.com/setup_24.x - Summary lines from output: - [internal] load metadata for docker.io/library/ubuntu:jammy-20260509 - RUN yarn install --immutable (failed) - ERROR: failed to build: failed to solve: process "/bin/sh -c yarn install --immutable" did not complete successfully: exit code: 127 Recommendation (actionable) - Install yarn in the image or switch to a provider npm/yarn alternative: - Add yarn installation step in Dockerfile or use npm install, or enable corepack/yarn as part of Node setup. - Verify that yarn is available in PATH during the build.
# Multi-stage build: builder uses Node image to compile API, final uses Ubuntu runtime
FROM node:24-slim AS builder
ENV CI=true
# Build arguments (optional): DAYTONA_BASE_API_URL is used to configure dashboard at build time
ARG DAYTONA_BASE_API_URL
ARG VERSION
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
ENV VERSION=${VERSION}
# Enable corepack (yarn) and ensure yarn is available
RUN corepack enable
RUN npm install -g yarn
WORKDIR /daytona
# Yarn caching layer: install dependencies
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Library dependencies used by API and Dashboard
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build API first (production)
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard (production) - uses DAYTONA_BASE_API_URL for API endpoint during build
RUN DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL} yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION
ENV VERSION=${VERSION}
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
EXPOSE 3000
# Final runtime image
FROM ubuntu:jammy-20260509 AS daytona
ENV CI=true
# Install runtime dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24 for running the app
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
WORKDIR /daytona
# Copy built artifacts from builder
COPY --from=builder /daytona/dist /daytona/dist
COPY --from=builder /daytona/node_modules /daytona/node_modules
COPY --from=builder /daytona/package.json /daytona/package.json
ENV DAYTONA_BASE_API_URL=""
ENV VERSION="0.0.1"
EXPOSE 3000
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Summary (under 1500 chars): - Failing step: [builder 3/17] RUN npm install -g yarn - Exit code: 1 - Exact error messages: - npm error code EEXIST - npm error path /usr/local/bin/yarn - npm error EEXIST: file already exists - npm error File exists: /usr/local/bin/yarn - npm error Remove the existing file and try again, or run npm - npm error with --force to overwrite files recklessly. - A complete log of this run can be found in: /root/.npm/_logs/2026-05-16T20_04_38_739Z-debug-0.log - ERROR: failed to build: failed to solve: process "/bin/sh -c npm install -g yarn" did not complete successfully: exit code: 1 - Missing packages or files mentioned: - None missing; the failure is due to an existing file causing EEXIST: File exists: /usr/local/bin/yarn - Version mismatch info: - Not reported. Context shows base images: node:24-slim and ubuntu:jammy-20260509, but no version mismatch is indicated.
# Multi-stage build: builder uses Node image to compile API and Dashboard, final uses Node runtime
# Builder stage: Node-based image for fast builds
FROM node:24-slim AS builder
ENV CI=true
# Build arguments (optional): DAYTONA_BASE_API_URL is used to configure dashboard at build time
ARG DAYTONA_BASE_API_URL
ARG VERSION
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
ENV VERSION=${VERSION}
# Enable Corepack (yarn) and ensure yarn is available via corepack
RUN corepack enable
WORKDIR /daytona
# Yarn caching layer: install dependencies
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source (API + Dashboard)
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Library dependencies used by API and Dashboard
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build API first (production)
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard (production) - uses DAYTONA_BASE_API_URL for API endpoint during build
RUN DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL} yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION
ENV VERSION=${VERSION}
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
EXPOSE 3000
# Final runtime image (Node-based)
FROM node:24-slim AS daytona
ENV CI=true
# Runtime: keep Node available for running the built app
WORKDIR /daytona
# Copy built artifacts from builder
COPY --from=builder /daytona/dist /daytona/dist
COPY --from=builder /daytona/node_modules /daytona/node_modules
COPY --from=builder /daytona/package.json /daytona/package.json
ENV DAYTONA_BASE_API_URL=""
ENV VERSION="0.0.1"
EXPOSE 3000
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Build timed out after 600s
FROM node:24-slim AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=%DAYTONA_BASE_API_URL%/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Build timed out after 600s
# Multi-stage build: builder uses Ubuntu jammy with Node to compile, final uses Ubuntu runtime
# Builder stage
FROM ubuntu:jammy-20260509 AS builder
ENV CI=true
# Install dependencies (apt-based)
RUN apt-get update && \
apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 24 (required by the build tooling)
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
# Enable Corepack for Yarn (Yarn 3+)
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App sources (API + Dashboard) and libraries
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build API first (production)
ARG DAYTONA_BASE_API_URL
ENV DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL}
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard (production) - uses DAYTONA_BASE_API_URL for API endpoint during build
RUN DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL} yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION
ENV VERSION=${VERSION}
# Final runtime image (Ubuntu)
FROM ubuntu:jammy-20260509 AS runtime
ENV CI=true
# Install runtime dependencies and Node.js 24 for running the app
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends bash curl python3 make g++ ca-certificates && \
curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get update && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
WORKDIR /daytona
# Copy built artifacts from builder
COPY --from=builder /daytona/dist /daytona/dist
COPY --from=builder /daytona/node_modules /daytona/node_modules
COPY --from=builder /daytona/package.json /daytona/package.json
ENV DAYTONA_BASE_API_URL=""
ENV VERSION="0.0.1"
EXPOSE 3000
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
ENTRYPOINT ["node", "dist/apps/api/main.js"]
Build timed out after 600s
# Two-stage build: builder (Node) compiles, runtime (Node) runs
FROM node:24-slim AS builder
ENV CI=true
ARG DAYTONA_BASE_API_URL
ARG VERSION
# Prepare Yarn (corepack is included in Node images)
RUN corepack enable
WORKDIR /daytona
# Install dependencies with Yarn (immutable installs)
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# NX + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App sources and libraries
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
# Build API first (production)
RUN yarn nx build api --configuration=production --nxBail=true
# Build Dashboard (production) - uses DAYTONA_BASE_API_URL for API endpoint during build
RUN DAYTONA_BASE_API_URL=${DAYTONA_BASE_API_URL} yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
# Expose version metadata
ARG VERSION
ENV VERSION=${VERSION}
# Final runtime image using Node for simplicity
FROM node:24-slim AS runtime
ENV CI=true
WORKDIR /daytona
# Copy built artifacts from builder
COPY --from=builder /daytona/dist /daytona/dist
COPY --from=builder /daytona/node_modules /daytona/node_modules
COPY --from=builder /daytona/package.json /daytona/package.json
EXPOSE 3000
HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/api/config"]
CMD ["node", "dist/apps/api/main.js"]
Build timed out after 600s
FROM node:24-slim AS daytona
ENV CI=true
# Install dependencies (apt instead of apk)
RUN apt-get update && apt-get install -y --no-install-recommends bash curl python3 make g++ && \
rm -rf /var/lib/apt/lists/*
RUN npm install -g corepack && corepack enable
WORKDIR /daytona
# Yarn caching layer
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
# Nx + TS config
COPY nx.json tsconfig.base.json .nxignore ./
# App source
COPY apps/api/ apps/api/
COPY apps/dashboard/ apps/dashboard/
# Lib dependencies
COPY libs/runner-api-client/ libs/runner-api-client/
COPY libs/api-client/ libs/api-client/
COPY libs/analytics-api-client/ libs/analytics-api-client/
COPY libs/toolbox-api-client/ libs/toolbox-api-client/
COPY libs/sdk-typescript/ libs/sdk-typescript/
COPY libs/runner-proto/ libs/runner-proto/
ENV NX_DAEMON=false
RUN yarn nx build api --configuration=production --nxBail=true
RUN VITE_API_URL=%DAYTONA_BASE_API_URL%/api yarn nx build dashboard --configuration=production --nxBail=true --output-style=stream
ARG VERSION=0.0.1
ENV VERSION=${VERSION}
HEALTHCHECK CMD [ "curl", "-f", "http://localhost:3000/api/config" ]
ENTRYPOINT ["node", "dist/apps/api/main.js"]