【问题标题】:Docker build fails with dependency issues even though I am satisfying themDocker 构建因依赖问题而失败,即使我很满意
【发布时间】:2019-09-12 10:36:46
【问题描述】:

我正在寻找关于为什么会失败的想法。
我已经在我的主机上完成了相同的步骤并且它们运行良好,我调用的包提供了所需的依赖项。

构建命令: docker build -t testbuild .

DockerFile:

FROM registry.redhat.io/rhel7:latest

RUN  yum install  -y yum-utils
RUN  yum-config-manager --enable \
         EPEL_7_EPEL_7 \
         Community_mysql-connectors-community \
         Community_mysql-tools-community \
         Community_mysql57-community \
         rhel-7-server-extras-rpms/x86_64 \
         rhel-7-server-optional-rpms/7Server/x86_64 \
         rhel-7-server-rh-common-rpms/7Server/x86_64 \
         rhel-7-server-rpms/7Server/x86_64 \
         rhel-server-rhscl-7-rpms/7Server/x86_64

RUN true \
 && yum install  -y \
      cairo \
      yum-utils\
      collectd \
      openldap-devel \
      rrdtool \
      gcc \
      rrdtool-devel \
      pyrrd \
      rrdtool-python \
      python-ldap \
      wget \
      pycairo-devel \
      pycairo \
      python-devel \
      collectd-nginx \
      findutils \
      rrdtool \
      logrotate \
      memcached \
      nginx \
      nodejs \
      npm \
      redis \
      pkgconfig \
      sqlite \
      expect \
      git \
      python3\
      python3-devel\
      libffi-devel \
      postgresql-devel \
      postgresql-devel \
      mysql-community-client \
      mysql-community-libs \
      mysql-community-common \
      mysql-community-libs-compat
RUN yum clean all

RUN pip3 install \
      virtualenv\
# && /usr/bin/easy_install virtualenv \
 && /usr/local/bin/virtualenv /opt/graphite \
 && . /opt/graphite/bin/activate \
 && pip3 install \
      PyMySQL \
      django==1.11.24 \
      django-statsd-mozilla \
      fadvise \
      gunicorn \
      msgpack-python \
      redis \
      rrdtool \
      python-ldap \
      mysqlclient \
      psycopg2

我得到的错误是 错误:命令出错,退出状态为 1: 命令:/opt/graphite/bin/python3 -c 'import sys,setuptools,tokenize; sys.argv[0] = '"'"'/tmp/pip-install-67zlal6a/rrdtool/setup.py'"'"'; 文件='"'"'/tmp/pip-install-67zlal6a/rrdtool/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info cwd:/tmp/pip-install-67zlal6a/rrdtool/ 完整输出(5 行): /tmp/tmp_python_rrdtoolfr1k715h/test_rrdtool.c:2:17:致命错误:rrd.h:没有这样的文件或目录 #包括 ^ 编译终止。 错误:无法编译二进制模块。您是否安装了 rrdtool 头文件和库? ---------------------------------------- 错误:命令出错,退出状态为 1: python setup.py egg_info 检查日志 完整的命令输出。

但我已确保这些文件与 yum 安装的软件包一起存在。

我已经注释掉了这个包,然后我得到了一个 mysql_config 错误,我也没有在我当前的测试主机上得到这个错误。这让我相信在构建的早期出现了问题。

有什么想法吗?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    无权访问 RHEL 存储库,所以我尝试使用 centos 7 并遇到同样的问题。

    安装这些额外的软件包有助于成功构建映像:

    RUN yum install -y epel-release
    RUN yum install -y python36-pip
    RUN yum install -y mysql mysql-devel
    RUN yum install -y python36-devel
    

    这是最终的 DockerFile:

    FROM centos:7
    
    RUN  yum install  -y yum-utils
    RUN  yum-config-manager --enable \
             EPEL_7_EPEL_7 \
             Community_mysql-connectors-community \
             Community_mysql-tools-community \
             Community_mysql57-community \
             rhel-7-server-extras-rpms/x86_64 \
             rhel-7-server-optional-rpms/7Server/x86_64 \
             rhel-7-server-rh-common-rpms/7Server/x86_64 \
             rhel-7-server-rpms/7Server/x86_64 \
             rhel-server-rhscl-7-rpms/7Server/x86_64
    
    RUN true \
     && yum install  -y \
          cairo \
          yum-utils\
          collectd \
          openldap-devel \
          rrdtool \
          gcc \
          rrdtool-devel \
          pyrrd \
          rrdtool-python \
          python-ldap \
          wget \
          pycairo-devel \
          pycairo \
          python-devel \
          collectd-nginx \
          findutils \
          rrdtool \
          logrotate \
          memcached \
          nginx \
          nodejs \
          npm \
          redis \
          pkgconfig \
          sqlite \
          expect \
          git \
          python3\
          python3-devel\
          libffi-devel \
          postgresql-devel \
          postgresql-devel \
          mysql-community-client \
          mysql-community-libs \
          mysql-community-common \
          mysql-community-libs-compat
    
    RUN yum install -y epel-release
    RUN yum install -y python36-pip
    RUN yum install -y mysql mysql-devel
    RUN yum install -y python36-devel
    RUN yum clean all
    
    RUN pip3 install \
          virtualenv\
     && /usr/local/bin/virtualenv /opt/graphite \
     && . /opt/graphite/bin/activate \
     && pip3 install \
          PyMySQL \
          django==1.11.24 \
          django-statsd-mozilla \
          fadvise \
          gunicorn \
          msgpack-python \
          redis \
          rrdtool \
          python-ldap \
          mysqlclient \
          psycopg2
    

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 2012-12-27
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      相关资源
      最近更新 更多