web-dev-qa-db-ja.com

/ bin / sh:1:./ configure:見つかりません-dockerfile

ApacherサーバーにCosignフィルターをインストールする必要があります。

Confluence からこのcosign-filterを使用する必要がありますが、インストールが./configureに達すると、エラーとしてスローされます。

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

次に、これを見つけました installation githubリポジトリを使用したcosignフィルターの場合、Dockerコンテナーでubuntu16.04を使用しているため、より便利であることがわかりましたが、このインストールでは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を押すと、2番目のエラーが発生し、次のエラーが発生します。

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

Dockerfile構成:

FROM ubuntu:16.04
FROM python:3.5
ENV PYTHONUNBUFFERED 1

RUN cat /etc/passwd
RUN cat /etc/group

RUN apt-get update && apt-get install -y \
    Apache2 \
    Apache2-dev \
    libapache2-mod-wsgi-py3 \
    autoconf \
    libssl-dev
RUN apt-get install -y openssl
RUN mkdir /var/run/sshd

ENV Apache_RUN_USER www-data
ENV Apache_RUN_GROUP www-data
ENV Apache_LOG_DIR /var/log/Apache2
ENV Apache_LOCK_DIR /var/lock/Apache2
ENV Apache_PID_FILE /var/run/Apache2.pid

# The Umich IAM copy of Cosign includes Apache 2.4 support
RUN wget https://github.com/umich-iam/cosign/archive/master.tar.gz
RUN tar xfz master.tar.gz
RUN cd cosign-master
RUN autoconf
RUN ./configure --enable-Apache2=`which apxs`
RUN make
RUN make isntall
RUN mkdir -p /var/cosign/filter
RUN chown www-data:www-data /var/cosign/filter

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code

EXPOSE 80


# Update the default Apache site with the config we created.
COPY 000-default.conf /etc/Apache2/sites-enabled/000-default.conf

RUN chown -R root:www-data /var/www
RUN chmod u+rwx,g+rx,o+rx /var/www
RUN find /var/www -type d -exec chmod u+rwx,g+rx,o+rx {} +
RUN find /var/www -type f -exec chmod u+rw,g+rw,o+r {} +

#essentially: CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
CMD ["/tmp/start.sh"]

おかげで、このフィルターをインストールして構成できるように、これを修正する方法はありますか?.

8
copser

Dockerdは、instructionFROMを除くすべてのDockerfileに対して新しいコンテナーを実行するため、

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

3つのコマンドは3つのstandaloneコンテナで実行されるため、cd cosign-masterコマンドは次のコンテナのPWD環境を変更できません。 absolute pathを使用するか、関連するコマンドを1つのコンテナーで実行できます。つまり1つのinstructionで実行できます。

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

PS:

  1. instructionは新しいレイヤーを生成するため、1つのinstructionを使用して、レイヤーの数を減らすためにさらにコマンドを実行する必要があります。
  2. 最終的な画像のサイズを縮小するために、intermediateファイルまたはソフトウェアをクリーンアップする必要があります。

たとえば:

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. 画像のサイズを大幅に縮小します。おそらく、Origin画像のone thirdだけです。
  3. 多分少し読みにくいです:)

お役に立てれば!

11
Weike