@@ -7,7 +7,36 @@ FROM mcr.microsoft.com/devcontainers/java:21-bookworm
77ARG NODE_VERSION="20"
88RUN su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"
99
10- # Install additional system dependencies
10+ # ============================================
11+ # INSTALL TOOLS (baked in for faster startup)
12+ # ============================================
13+
14+ # Install Docker CLI and Docker Compose
15+ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
16+ && apt-get -y install --no-install-recommends \
17+ apt-transport-https \
18+ ca-certificates \
19+ curl \
20+ gnupg \
21+ lsb-release \
22+ && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \
23+ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list \
24+ && apt-get update \
25+ && apt-get -y install --no-install-recommends docker-ce-cli docker-compose-plugin \
26+ && apt-get clean -y && rm -rf /var/lib/apt/lists/*
27+
28+ # Install GitHub CLI
29+ RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
30+ && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
31+ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list \
32+ && apt-get update \
33+ && apt-get -y install --no-install-recommends gh \
34+ && apt-get clean -y && rm -rf /var/lib/apt/lists/*
35+
36+ # ============================================
37+ # INSTALL SYSTEM DEPENDENCIES
38+ # ============================================
39+
1140RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
1241 && apt-get -y install --no-install-recommends \
1342 postgresql-client \
@@ -40,50 +69,8 @@ ENV PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium
4069# Install global npm packages
4170RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g npm@latest" 2>&1
4271
43- # ============================================
44- # PRE-CACHE DEPENDENCIES FOR FASTER STARTUP
45- # ============================================
46-
47- # Create cache directories
48- RUN mkdir -p /home/vscode/.npm-cache /home/vscode/.m2-cache \
49- && chown -R vscode:vscode /home/vscode/.npm-cache /home/vscode/.m2-cache
50-
51- # --- NPM Dependencies ---
52- # Copy package files for dependency caching
53- COPY --chown=vscode:vscode package*.json /tmp/deps/
54- COPY --chown=vscode:vscode apps/frontend/package*.json /tmp/deps/apps/frontend/
55-
56- # Install root npm dependencies
57- RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && cd /tmp/deps && npm install" 2>&1
58-
59- # Install frontend npm dependencies
60- RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && cd /tmp/deps/apps/frontend && npm install --legacy-peer-deps" 2>&1
61-
62- # --- Maven Dependencies ---
63- # Copy pom.xml for Maven dependency caching
64- COPY --chown=vscode:vscode apps/backend/pom.xml /tmp/deps/apps/backend/
65- COPY --chown=vscode:vscode apps/backend/.mvn /tmp/deps/apps/backend/.mvn/
66- COPY --chown=vscode:vscode apps/backend/mvnw /tmp/deps/apps/backend/
67-
68- # Download Maven dependencies
69- RUN cd /tmp/deps/apps/backend \
70- && chmod +x mvnw \
71- && ./mvnw dependency:go-offline -B -q || true
72-
73- # Move cached dependencies to persistent locations
74- RUN cp -r /tmp/deps/node_modules /home/vscode/.npm-cache/root-node_modules 2>/dev/null || true \
75- && cp -r /tmp/deps/apps/frontend/node_modules /home/vscode/.npm-cache/frontend-node_modules 2>/dev/null || true \
76- && chown -R vscode:vscode /home/vscode/.npm-cache /home/vscode/.m2
77-
78- # Cleanup temp files
79- RUN rm -rf /tmp/deps
80-
81- # ============================================
82- # END DEPENDENCY CACHING
83- # ============================================
84-
8572# Set working directory
86- WORKDIR /workspaces/SimpleAccounts-UAE
73+ WORKDIR /workspaces
8774
8875# Default command
8976CMD ["sleep" , "infinity" ]
0 commit comments