2017-09-23 18 views
0

私はドッキングファイルを作成して、コンテナーにopenresty nginxを実行しています。nginxドッカーファイルはファイルを開くことができません

私のドッカーファイルは以下のとおりです。

FROM ubuntu:latest 


ENV PATH="/usr/local/openresty/nginx/sbin:${PATH}" 

LABEL info="running open resty on docker container" 

RUN apt-get update -y \ 
    && apt-get install -y wget \ 
    && wget -qO - https://openresty.org/package/pubkey.gpg | apt-key add - \ 
    && apt-get -y install software-properties-common \ 
    && add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \ 
    && apt-get update -y \ 
    && apt-get install -y openresty 
RUN mkdir -p /opt/poc 

RUN cd /opt/poc \ 
     && mkdir logs \ 
     && touch logs/error.log \ 
     && mkdir conf \ 
     && cd ../ 

RUN chmod -R 755 /opt/poc 
WORKDIR /opt/poc 


ADD ./conf/nginx.conf conf/ 

EXPOSE 8383 


CMD ["nginx", "-p /opt/poc","-c conf/nginx.conf"] 

イメージは問題なしで構築されます。しかし、私はドッカーを実行すると、私は以下のエラーメッセージが表示されます。

nginxの:[警告]をオープンできませんでしたエラーログファイル:オープン()は、 " /opt/poc/logs/error.logは、" 失敗した(2:そのようなファイルまたはディレクトリ) 2017年9月23日3時35分44秒[EMERG] 1#1:

代わりにI場合CMD ["nginx", "-p /opt/poc","-c conf/nginx.conf"]を実行しているの:オープン() "は/ opt/POC/confには/ nginx.conf" は(そのようなファイルやディレクトリは2)が失敗しましたCMD $lsに変更すると、ドッカーはconfディレクトリとlogsディレクトリを一覧表示しています。私はここで何が欠けているのか分かりません。

+0

weelを使用しないでください公式のドッカー画像 - https://hub.docker.com/r/openresty/openresty/ –

答えて

2

あなたの問題は難しいことですが、私はそれを理解したと思います。

TL; DR

用途このCMD(それは-p-cフラグにはスペースがありません)

CMD ["nginx", "-g", "daemon off;", "-p", "/opt/poc", "-c", "conf/nginx.conf"] 

-g daemon off;フラグはフォワードプロセスとしてnginxのをもたらします。さもなければ、これがデーモンとして実行されるなら、あなたのコンテナはnginxが起動した直後に死にます。

ロング回答

あなたCMDコマンドのいずれかに間隔を置いた文字列を追加するときに問題が発生します。あなたの場合、-p /opt/poc-c conf/nginx.conf

CMDは、あなたのCMD部分に入れた2つの「単語」のうちの1つを無視していると思います(確認するには、docs/Dockerのソースコードをさらに調べる必要があります)。

ドキュメントが推奨される方法は次のようにやっている、言うように:

CMD ["executable","param1","param2"] 

だから、あなたのケースでは、あなたのparamsは「もっと」をやっているだけのparamであることより(ときに「もっと」であり、そこにスペースを入れてください)。したがって、スペースを取り除き、コマンドを分割してドキュメントが問題を解決すると言う方法で分割します。

ヒント

私はあなたのユースケースだか知っているが、あなたができれば、コミュニティによって提供された画像を使用しないでください。

https://hub.docker.com/r/openresty/openresty

はまた、彼らはあなたがそれを実行することができますどのように良いドキュメントを提供します。この例では、openrestyの所有者は、画像を維持します。

希望すると助かります!

+0

悪魔を提案してくれてありがとう。私はあなたの答えを受け入れた。 – GAK

関連する問題