/bin/sh: 1: ./configure: 未找到 - dockerfile
/bin/sh: 1: ./configure: not found - dockerfile
我需要为 Apacher 服务器安装 Cosign 过滤器。
我需要使用来自 Confluence 的这个余弦过滤器,但是当我的安装命中 ./configure 时,它显示为错误:
ERROR: Unknown instruction: --ENABLE-APACHE2=/PATH/TO/APACHE2/BIN/APXS
然后我发现这个 installation for cosign filter with github repository,因为我在我的 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
时会发生第二个错误,它会抛出这个错误:
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
Docker文件配置:
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"]
有什么办法可以解决这个问题,这样我就可以安装和配置这个过滤器了,谢谢。
Dockerd 将 运行 为每个 instruction
一个新容器,除了 Dockerfile
中的 FROM
,所以
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:
- 应该使用一个
instruction
执行更多命令来减少层数,因为每个instruction
都会生成一个新层。
- 应该清理
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"]
这将:
- 将图像的层数从大约
35
减少到 9
!
- 极大地减小图像的大小,可能只有原始图像的
one third
。
- 可能有点难读:)
希望对您有所帮助!
我需要为 Apacher 服务器安装 Cosign 过滤器。
我需要使用来自 Confluence 的这个余弦过滤器,但是当我的安装命中 ./configure 时,它显示为错误:
ERROR: Unknown instruction: --ENABLE-APACHE2=/PATH/TO/APACHE2/BIN/APXS
然后我发现这个 installation for cosign filter with github repository,因为我在我的 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
时会发生第二个错误,它会抛出这个错误:
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
Docker文件配置:
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"]
有什么办法可以解决这个问题,这样我就可以安装和配置这个过滤器了,谢谢。
Dockerd 将 运行 为每个 instruction
一个新容器,除了 Dockerfile
中的 FROM
,所以
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:
- 应该使用一个
instruction
执行更多命令来减少层数,因为每个instruction
都会生成一个新层。 - 应该清理
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"]
这将:
- 将图像的层数从大约
35
减少到9
! - 极大地减小图像的大小,可能只有原始图像的
one third
。 - 可能有点难读:)
希望对您有所帮助!