FROM python:3.9 # 创建用户并切换到该用户 RUN useradd -m -u 1000 user # 设置环境变量 ENV PATH="/home/user/.local/bin:$PATH" # /home/user/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin RUN echo $PATH # 设置环境变量,以避免在安装过程中出现交互提示 ENV DEBIAN_FRONTEND=noninteractive # 设置工作目录 WORKDIR /app USER root # # 安装 sudo RUN apt-get update && apt-get install -y sudo supervisor # 克隆并安装 scipdf_parser RUN git clone -q https://github.com/titipata/scipdf_parser.git RUN pip install -q git+https://github.com/titipata/scipdf_parser # 进入 scipdf_parser 目录并安装 spaCy 模型 WORKDIR /app/scipdf_parser RUN python -m spacy download en_core_web_sm # 返回工作目录 WORKDIR /app # 复制requirements.txt文件并安装Python依赖 COPY --chown=user ./requirements.txt requirements.txt RUN pip install -q python-multipart RUN pip install -q --upgrade pip RUN pip install -q --upgrade -r requirements.txt # 下载并解压 OpenJDK 11 RUN wget -q https://download.oracle.com/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz \ && tar -zxvf openjdk-11.0.2_linux-x64_bin.tar.gz > /dev/null \ && mv jdk-11.0.2 /opt/ \ && rm openjdk-11.0.2_linux-x64_bin.tar.gz # 设置环境变量 ENV JAVA_HOME=/opt/jdk-11.0.2 ENV PATH=$JAVA_HOME/bin:$PATH # 验证 Java 安装 RUN java -version # RUN sudo apt-get install -y maven RUN wget -q https://github.com/kermitt2/grobid/archive/0.7.3.zip RUN unzip 0.7.3.zip > /dev/null # 安装依赖 RUN git clone -q https://github.com/kermitt2/grobid.git WORKDIR /app/grobid RUN chmod +x gradlew RUN ./gradlew clean install --console=plain WORKDIR /app # 暴露端口 EXPOSE 8070 EXPOSE 7860 COPY --chown=user ./start.sh start.sh RUN chmod +x start.sh RUN chmod -R 777 grobid # 复制应用程序代码 COPY --chown=user . /app CMD ["./start.sh"] # CMD ["supervisord", "-c", "supervisord.conf"] # # 设置默认命令 # CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] # "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860" # uvicorn app:app --host "0.0.0.0" --port 7860