# docker compose build roomote-controller && docker compose up roomote-controller FROM node:20-slim AS base # Install pnpm ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable # Install common system packages RUN apt update && \ apt install -y \ curl \ git \ vim \ jq \ netcat-openbsd \ apt-transport-https \ ca-certificates \ gnupg \ lsb-release \ wget \ gpg \ gh \ && rm -rf /var/lib/apt/lists/* # Install Docker cli RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ && 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" | tee /etc/apt/sources.list.d/docker.list > /dev/null \ && apt update && apt install -y docker-ce-cli \ && rm -rf /var/lib/apt/lists/* # Install flyctl RUN curl -fsSL https://fly.io/install.sh | sh RUN echo 'export FLYCTL_INSTALL="/root/.fly"' >> ~/.bashrc RUN echo "export PATH=\"\$FLYCTL_INSTALL/bin:\$PATH\"" >> ~/.bashrc WORKDIR /roo COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json .env.* ./ COPY packages/config-eslint/package.json ./packages/config-eslint/ COPY packages/config-typescript/package.json ./packages/config-typescript/ COPY packages/env/package.json ./packages/env/ COPY packages/db/package.json ./packages/db/ COPY packages/ipc/package.json ./packages/ipc/ COPY packages/job-auth/package.json ./packages/job-auth/ COPY apps/roomote/package.json ./apps/roomote/ RUN pnpm install COPY packages/config-eslint ./packages/config-eslint/ COPY packages/config-typescript ./packages/config-typescript/ COPY packages/env ./packages/env/ COPY packages/db ./packages/db/ COPY packages/ipc ./packages/ipc/ COPY packages/job-auth ./packages/job-auth/ COPY apps/roomote ./apps/roomote/ WORKDIR /roo/apps/roomote ENV NODE_ENV=production ENV HOST_EXECUTION_METHOD=docker CMD ["sh", "-c", "npx dotenvx run -f ../../.env.${APP_ENV:-development} -- tsx src/lib/controller.ts"]