首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在码头构建时不可能安装软件包

在码头构建时不可能安装软件包
EN

Stack Overflow用户
提问于 2022-09-02 14:30:27
回答 2查看 391关注 0票数 0

我正在使用php:7.4-apache-buster映像在运行Debian 11的膝上型电脑上构建一个码头。

在我的Dockerfile中,我运行一些apt-get更新/安装命令+一些docker-php-ext-配置:

代码语言:javascript
运行
复制
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils libzip-dev libssl-dev vim \
## Zip extension
&& apt-get install -y --no-install-recommends zlib1g-dev \
&& docker-php-ext-install zip \
## gd  & other image extentions
&& apt-get install -y --no-install-recommends libpng-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-configure exif && docker-php-ext-install -j$(nproc) exif \
## Other extensions & database utils
&& docker-php-ext-install mysqli pdo pdo_mysql

然后我调用了一个脚本,并在其中安装了一些包:

代码语言:javascript
运行
复制
    package_array=( "apt-utils" "acl" "libzip-dev" "libssl-dev" "vim" "locales" "zlib1g-dev" "libpng-dev" "libfreetype6-dev" "libjpeg62-turbo-dev" "libpng-dev" "git" "unzip" "curl" "libreoffice-base-core" "libreoffice-base-drivers" "libreoffice-core" "libreoffice-common" "libreoffice-writer" "libreoffice-calc" "libreoffice-draw" "libreoffice-impress" "python3" "ghostscript" "default-jdk" "poppler-utils" "openjdk-11-jre-headless" "cron")        
    for pkt in "${package_array[@]}"; do
        apt-get update
        echo -ne "${OK}Installation of $pkt ${RESET}"
        apt-get install -y "$pkt" &>> "$deb_log_path"
        ERR_CODE=$?
        if [ $ERR_CODE -ne 0 ]; then
            echo ""
            echo -e "${FAIL}${RED_CROSS_MARK}[ERR] You will find the log here: ""$deb_log_path""${RESET}"
            echo -e "\\r${FAIL}${RED_CROSS_MARK}[ERR] An error occurred installing '$pkt' (return code $ERR_CODE), exiting..${RESET}"
            exit 
        fi
        echo -e "\\r${OK}${CHECK_MARK} $pkt has been installed.${RESET}"
    done

问题是,有时(就像10次中的8次),安装或更新包时会收到这样的消息:

代码语言:javascript
运行
复制
    E: Failed to fetch http://deb.debian.org/debian/pool/main/x/xdg-utils/xdg-utils_1.1.3-1+deb10u1_all.deb  Unable to connect to deb.debian.org:http: [IP: 199.232.178.132 80]
    E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

它发生在随机时间和随机包或在更新期间。我已经试过了

  • 用一个sources.list更改COPY sources.list /etc/apt/sources.list
  • 用公共DNS:RUN echo "nameserver 8.8.8.8" >> /etc/resolv.conf && echo "nameserver 8.8.4.4" > /etc/resolv.conf重写resolv.conf
  • 通过脚本安装包时,在我的循环中添加一个apt更新(参见上面的代码)
  • 在同一行的dockerfile中运行我所有的apt更新指令。
  • 使用停靠-撰写文件并添加以下行:network_mode: "host"

没有什么是可行的,有时我的构建将没有错误,而大多数情况下,它会有一个错误。我已经在网上寻找帮助了,但即使我似乎不是第一个经历这件事的人,也解决不了我的问题。

编辑:我现在可能会结束这个话题,因为从我的docker文件中抑制network_mode: "host"行确实提高了我的构建成功率。但是,这一切看起来都很奇怪

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73584129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档