26

コマンド :

docker build -t nginx-ubuntu . 

以下の Dockerfile を使用します。

Ubuntuから:12.10
apt-get update を実行します
apt-get -y install libpcre3 libssl-dev を実行します
apt-get -y install libpcre3-dev を実行します
RUN apt-get -y install wget zip gcc
RUN wget http://nginx.org/download/nginx-1.4.1.tar.gz
gunzip nginx-1.4.1.tar.gz を実行します。
tar -xf nginx-1.4.1.tar を実行します。
RUN wget --no-check-certificate https://github.com/max-l/nginx_accept_language_module/archive/master.zip
RUN解凍マスター
cd nginx-1.4.1 を実行します
RUN ./configure --add-module=../nginx_accept_language_module-master --with-http_ssl_module --with-pcre=/lib/x86_64-linux-gnu --with-openssl=/usr/lib/x86_64-linux-ヌー

最終行で失敗 (./configure ...)

最後の行を削除してコンテナーで bash を実行し、最後の行を手動で実行すると、機能します。

コマンドがDockerfileに追加されたときに、コンテナ内で正常に実行されるコマンドはすべて機能するはずです(接頭辞はRUN)

私は何かが欠けていますか?

4

3 に答える 3

49

pwd は、RUN コマンド間で永続的ではありません。同じRUN内でcdして構成する必要があります。

この Dockerfile は正常に動作します。

FROM ubuntu:12.10
RUN apt-get update
RUN apt-get -y install libpcre3 libssl-dev
RUN apt-get -y install libpcre3-dev
RUN apt-get -y install wget zip gcc
RUN wget http://nginx.org/download/nginx-1.4.1.tar.gz
RUN gunzip nginx-1.4.1.tar.gz
RUN tar -xf nginx-1.4.1.tar
RUN wget --no-check-certificate https://github.com/max-l/nginx_accept_language_module/archive/master.zip
RUN unzip master
RUN cd nginx-1.4.1 && ./configure --add-module=../nginx_accept_language_module-master --with-http_ssl_module --with-pcre=/lib/x86_64-linux-gnu --with-openssl=/usr/lib/x86_64-linux-gnu
于 2013-07-26T22:24:16.367 に答える
2

私が呼び出したとき、wgetまたはtarRUN でパスを指定する必要があった場合、代わりに WORKDIR をパスとして使用する場合は、ADD が正しいアプローチのようです。したがって、以下のいずれかで問題が解決しました。

走る

RUN wget http://nginx.org/download/nginx-1.4.1.tar.gz -P ~/directory
RUN tar -zxf ~/directory/nginx-1.4.1.tar.gz -C ~/directory

また

追加

WORKDIR ~/directory
ADD http://nginx.org/download/nginx-1.4.1.tar.gz nginx-1.4.1.tar.gz
RUN tar -zxf nginx-1.4.1.tar.gz

2 番目のアプローチでは、コンテナーに wget をインストールする必要がなくなりました。

于 2016-06-08T03:10:19.770 に答える