Spaces:
Sleeping
Sleeping
| FROM python:3.11-slim-bookworm AS base | |
| ## Basis ## | |
| ENV ENV=prod \ | |
| PORT=9099 | |
| # Install GCC and build tools. | |
| # These are kept in the final image to enable installing packages on the fly. | |
| RUN apt-get update && \ | |
| apt-get install -y gcc build-essential curl git && \ | |
| apt-get clean && \ | |
| rm -rf /var/lib/apt/lists/* | |
| RUN apt-get update && apt-get install -y wget unzip openssh-client procps nodejs npm | |
| ARG PIP_OPTIONS='-i https://mirrors.aliyun.com/pypi/simple/' | |
| ARG ENABLE_OSS_MOUNT="" | |
| RUN pip install -U pip pysocks ${PIP_OPTIONS} | |
| # Install Chrome Driver | |
| RUN mkdir /app | |
| RUN cd /app/ && \ | |
| wget https://storage.googleapis.com/chrome-for-testing-public/136.0.7103.92/linux64/chromedriver-linux64.zip && \ | |
| unzip chromedriver-linux64.zip && \ | |
| rm chromedriver-linux64.zip | |
| ENV CHROME_DRIVER_PATH=/app/chromedriver-linux64/chromedriver | |
| RUN if [ "$ENABLE_OSS_MOUNT" = "true" ]; then \ | |
| apt-get update && \ | |
| apt-get install -y gdebi-core mime-support && \ | |
| cd /tmp && \ | |
| wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.6_ubuntu22.04_amd64.deb && \ | |
| gdebi ossfs_1.91.6_ubuntu22.04_amd64.deb -n && \ | |
| rm ossfs_1.91.6_ubuntu22.04_amd64.deb && \ | |
| apt-get clean && \ | |
| rm -rf /var/lib/apt/lists/*; \ | |
| fi | |
| FROM base as runner | |
| WORKDIR /app | |
| # Install Python dependencies | |
| COPY ./requirements.txt . | |
| RUN pip3 install uv ${PIP_OPTIONS} | |
| RUN uv pip install --system -r requirements.txt --no-cache-dir ${PIP_OPTIONS} | |
| # Copy the application code | |
| RUN echo "start install aworld" | |
| RUN mkdir -p /app/lib | |
| RUN cd /app/lib && git clone https://github.com/inclusionAI/AWorld.git | |
| RUN cd /app/lib/AWorld && git checkout framework_upgrade_aworldserver_gaia && pip install -r aworld/requirements.txt ${PIP_OPTIONS} && python setup.py install | |
| RUN npx playwright install chrome --with-deps --no-shell | |
| RUN cd /app | |
| # Layer on for other components | |
| FROM runner AS app | |
| WORKDIR /app | |
| COPY . . | |
| # Expose the port | |
| ENV HOST="0.0.0.0" | |
| ENV PORT="9099" | |
| # if we already installed the requirements on build, we can skip this step on run | |
| ENTRYPOINT [ "bash", "start.sh" ] | |