codex-multi-workspace 0.3.2

Run Codex CLI in Docker across saved single-folder or multi-folder workspaces.
Documentation
FROM ubuntu:22.04

LABEL org.openai.codex-ws.image-version="8"

ENV DEBIAN_FRONTEND=noninteractive
ENV MISE_DATA_DIR=/opt/mise
ENV MISE_CACHE_DIR=/var/cache/mise
ENV MISE_CONFIG_DIR=/root/.config/mise
ENV PATH=/root/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        bash \
        bubblewrap \
        ca-certificates \
        curl \
        git \
        gnupg \
        lsb-release \
        tar \
        unzip \
        xz-utils && \
    mkdir -p /etc/apt/keyrings && \
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
        gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" > \
        /etc/apt/sources.list.d/nodesource.list && \
    apt-get update && \
    apt-get install -y --no-install-recommends nodejs && \
    rm -rf /var/lib/apt/lists/*

RUN npm install -g @openai/codex lazycodex-ai && \
    npm cache clean --force && \
    ln -sf "$(command -v node)" /usr/local/bin/node && \
    ln -sf "$(command -v codex)" /usr/local/bin/codex && \
    ln -sf "$(command -v lazycodex-ai)" /usr/local/bin/lazycodex-ai

RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
    curl -fsSL https://mise.run | sh && \
    ln -sf /root/.local/bin/uv /usr/local/bin/uv && \
    ln -sf /root/.local/bin/uvx /usr/local/bin/uvx && \
    ln -sf /root/.local/bin/mise /usr/local/bin/mise && \
    mkdir -p "${MISE_DATA_DIR}" "${MISE_CACHE_DIR}" "${MISE_CONFIG_DIR}" && \
    mise --version && \
    uv --version

RUN mkdir -p /root/.codex

COPY codex-ws-entrypoint.sh /usr/local/bin/codex-ws-entrypoint
RUN chmod 0755 /usr/local/bin/codex-ws-entrypoint

ENTRYPOINT ["/usr/local/bin/codex-ws-entrypoint"]