ARG CODE_QUEUE_BASE_IMAGE=oven/bun:1-debian FROM ${CODE_QUEUE_BASE_IMAGE} ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright RUN (command -v codex >/dev/null 2>&1 && command -v opencode >/dev/null 2>&1 && command -v docker >/dev/null 2>&1 && command -v rg >/dev/null 2>&1) \ || (apt-get update \ && apt-get install -y --no-install-recommends \ bash \ bubblewrap \ ca-certificates \ curl \ docker-cli \ docker-compose \ file \ g++ \ gcc \ git \ gzip \ iproute2 \ iptables \ iputils-ping \ jq \ make \ npm \ openssh-client \ patch \ pkg-config \ procps \ python3 \ python3-pip \ ripgrep \ rsync \ tar \ tini \ unzip \ xz-utils \ && mkdir -p /usr/local/lib/docker/cli-plugins /root/.docker/cli-plugins \ && ln -sf /usr/bin/docker-compose /usr/local/lib/docker/cli-plugins/docker-compose \ && ln -sf /usr/bin/docker-compose /root/.docker/cli-plugins/docker-compose \ && npm install -g @openai/codex@0.128.0 opencode-ai@1.14.48 playwright@1.59.1 \ && playwright install --with-deps chromium \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*) WORKDIR /app/src/components/microservices/code-queue COPY src/components/microservices/code-queue/package.json ./package.json RUN test -d node_modules/typescript || bun install WORKDIR /app COPY package.json /app/package.json COPY bun.lock /app/bun.lock RUN bun install COPY src/components/shared /app/src/components/shared WORKDIR /app/src/components/microservices/code-queue COPY src/components/microservices/code-queue/tsconfig.json ./tsconfig.json COPY src/components/microservices/code-queue/src ./src EXPOSE 4222 ENTRYPOINT ["tini", "--"] CMD ["bun", "--smol", "run", "src/index.ts"]