/ bin / sh:1:./ configure:not found - dockerfile

时间:2017-06-09 07:20:35

标签: apache docker docker-compose ubuntu-16.04

我需要为Apacher服务器安装Cosign过滤器。

我需要使用Confluence中的这个cosign-filter,但是当我的安装命中时./configure它会出现错误:

ERROR: Unknown instruction: --ENABLE-APACHE2=/PATH/TO/APACHE2/BIN/APXS

然后我发现这个installation用于使用github存储库的cosign过滤器,并且因为我在我的Docker容器中使用ubuntu16.04我发现它更有用,但是在这个安装中我遇到了{{{ 1}}所以当他点击autoconf时,它会收到这个错误:

RUN autoconf

当他点击autoconf: error: no input file ERROR: Service 'web' failed to build: The command '/bin/sh -c autoconf' returned a non-zero code: 1 时会发生第二次错误,会发生此错误:

RUN ./configure --enable-apache2= which apx

Dockerfile配置:

Step 19/35 : RUN ./configure --enable-apache2=`which apxs`
 ---> Running in 1e9f870df22f
/bin/sh: 1: ./configure: not found
ERROR: Service 'web' failed to build: The command '/bin/sh -c ./configure --enable-apache2=`which apxs`' returned a non-zero code: 127

所以我有办法解决这个问题,所以我可以安装和配置这个过滤器,谢谢。

1 个答案:

答案 0 :(得分:5)

Dockerd将为instruction中除FROM之外的每个Dockerfile运行一个新容器,所以

RUN cd cosign-master
RUN autoconf
RUN ./configure --enable-apache2=`which apxs`

三个命令将在三个standalone容器中执行,因此cd cosign-master命令无法更改下一个容器的PWD环境。 您可以使用absolute path或在一个容器中执行相关命令,这意味着在一个instruction中。

RUN cd cosign-master \
    && autoconf \
    && ./configure --enable-apache2=`which apxs` \
    && make \
    && make install

PS:

  1. 应使用一个instruction来执行更多命令以减少图层数,因为每个instruction都会生成一个新图层。
  2. 应清理intermediate文件或软件以减小最终图像的大小。
  3. 例如:

    FROM ubuntu:16.04
    FROM python:3.5
    
    ENV PYTHONUNBUFFERED=1 \
        APACHE_RUN_USER=www-data \
        APACHE_RUN_GROUP=www-data \
        APACHE_LOG_DIR=/var/log/apache2 \
        APACHE_LOCK_DIR=/var/lock/apache2 \
        APACHE_PID_FILE=/var/run/apache2.pid
    
    RUN set -ex \
        && cat /etc/passwd \
        && cat /etc/group \
        && apt-get update \
        && export COMPILE_TOOLS="autoconf libssl-dev openssl" \
        && apt-get install -y \
                   apache2 \
                   apache2-dev \
                   libapache2-mod-wsgi-py3 \
                   ${COMPILE_TOOLS} \
        && wget https://github.com/umich-iam/cosign/archive/master.tar.gz -O /tmp/cosign-master.tar.gz \
        && tar xfz /tmp/cosign-master.tar.gz -C=/tmp \
        && cd /tmp/cosign-master \
        && autoconf \
        && ./configure --enable-apache2=$(which apxs) \
        && make \
        && make install \
        && mkdir -p /var/cosign/filter \
        && chown www-data:www-data /var/cosign/filter \
        && apt-get purge -y ${COMPILE_TOOLS} \
        && rm -rf /var/lib/apt/lists/* \
                  /tmp/cosign-master.tar.gz \
                  /tmp/cosign-master/*
    
    WORKDIR /code
    
    # The Umich IAM copy of Cosign includes Apache 2.4 support
    COPY requirements.txt /code/
    COPY . /code
    # Update the default apache site with the config we created.
    COPY 000-default.conf /etc/apache2/sites-enabled/000-default.conf
    
    RUN mkdir /var/run/sshd \
        && pip install -r requirements.txt \
        && chown -R root:www-data /var/www \
        && chmod u+rwx,g+rx,o+rx /var/www \
        && find /var/www -type d -exec chmod u+rwx,g+rx,o+rx {} + \
        && find /var/www -type f -exec chmod u+rw,g+rw,o+r {} +
    
    EXPOSE 80
    
    #essentially: CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
    CMD ["/tmp/start.sh"]
    

    这将:

    1. 将图片的图层从大约35缩小为9
    2. 极大地缩小图片的大小,可能只是原始图片的one third
    3. 可能有点难以阅读:)
    4. 希望这有帮助!