dependencies - Cloud Run 容器可能由于包问题而无法构建?
问题描述
从 GCP 项目中的特定目录构建 Cloud Run 容器时遇到错误。这个特定的目录在过去一直是正确构建的,并且自上次成功构建以来没有对其进行任何更改。
然而,最近,我想为这个目录启动一个管道,所以我在代码中添加了几个井号(这样 Cloud Build 触发器可以开始构建 Run 容器 - 此外,添加这些井号应该不会影响任何内容在代码中)。在这个过程中,出现了这个错误:
E: Unable to locate package python3.7-dev
E: Couldn't find any package by glob 'python3.7-dev'
E: Couldn't find any package by regex 'python3.7-dev'
The command '/bin/sh -c apt-get update && apt-get upgrade -y && apt-get install -y wget
unzip xvfb libxtst6 libxrender1 python3.7-dev build-essential net-tools' returned a non-zero
code: 100
鉴于没有任何改变,我不确定是什么导致了这个错误。此错误消息可能意味着什么,我应该采取什么措施来修复它?任何帮助表示赞赏,如果需要更多信息,我很乐意更新问题。谢谢!
编辑:这些是 dockerfile 内容:
FROM python:3.7-slim
# Allow statements and log messages to immediately appear in the Cloud Run logs
ENV PYTHONUNBUFFERED True
# install dependencies
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y wget unzip xvfb libxtst6 libxrender1 python3.7-dev build-essential net-tools
#RUN apt-get install -y procps
# set environment variables
ENV TWS_INSTALL_LOG=/root/Jts/tws_install.log \
ibcIni=/root/ibc/config.ini \
ibcPath=/opt/ibc \
javaPath=/opt/i4j_jres \
twsPath=/root/Jts \
twsSettingsPath=/root/Jts
# make dirs
RUN mkdir -p /tmp && mkdir -p ${ibcPath} && mkdir -p ${twsPath}
# copy over IB Gateway
COPY Jts /root/Jts
COPY i4j_jres /home/mmr/.i4j_jres
# download IBC
RUN wget -q -O /tmp/IBC.zip https://github.com/IbcAlpha/IBC/releases/download/3.8.2/IBCLinux-3.8.2.zip
RUN unzip /tmp/IBC.zip -d ${ibcPath}
RUN chmod +x ${ibcPath}/*.sh ${ibcPath}/*/*.sh
# copy IBC/Jts configs
COPY ibc/config.ini ${ibcIni}
# copy cmd script
WORKDIR /home
COPY cmd.sh cmd.sh
RUN chmod +x cmd.sh
# set display environment variable (must be set after TWS installation)
ENV DISPLAY=:0
WORKDIR /home
COPY ib_server ./ib_server
COPY __init__.py .
COPY requirements.txt .
RUN pip install -r /home/requirements.txt
# execute cmd script to start Xvfb and gunicorn
CMD ./cmd.sh
# CMD tail -f /dev/null
当对目录进行更改并推送时会触发容器创建,这就是为什么我必须添加井号并推送来启动构建的原因。
解决方案
错误在于您尝试在容器中安装的 python3.7-dev 包(Dockerfile 的第 9 行),因为该包不再存在于容器的源中。它与您的更改或 Cloud Build 无关,因为自上次推送以来,该软件包可能刚刚从源中删除。
如果你需要一个 python-dev 包,我建议你python3-dev
特别考虑安装,或者python3.9-dev
,因为次要 python 版本中的所有更改都应该相互向后兼容。
但是,如果您确实需要python3.7-dev
,则需要手动重新编译和安装软件包,或者在可以找到的地方添加源代码并安装它。请记住,此 python 映像所基于的 debian 版本与此软件包不兼容,您需要手动解决,因此这不是一个直接的解决方案。
推荐阅读
- python - 使用numpy内存映射python提取文件
- curl - 我应该如何为 ftp 下载设置 curl 超时?
- c# - 需要将我的枚举插入 C# 中的组合框
- python - NLP - Python - 条件频率分布
- asp.net-mvc - ASP NET MVC 上一页
- php - 如何防止标题在 php mysqli 中重复
- list - 使用 Haskell 上的递归返回给定正整数的元组列表
- http - 即使在重新启动 IDE 后,FLUTTER 中的未定义名称“http”
- markdown - 摆脱 Sphinx 中的“重复标签”警告
- java - maven-shade-plugin 输出带有 shadedArtifactAttached 错误被安装覆盖