Dockerファイルに対して2つのコマンドを実行する必要がありますが、どちらのコマンドも端末に接続されており、次のコマンドからの実行をブロックしています。
dockerfile:
FROM sinet/nginx-node:latest
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
RUN git clone https://name:[email protected]/joaocromg/front-web-alferes.git
WORKDIR /usr/src/app/front-web-alferes
RUN npm install
RUN npm install bower -g
RUN npm install gulp -g
RUN bower install --allow-root
COPY default.conf /etc/nginx/conf.d/
RUN nginx -g 'daemon off;' & # command 1 blocking
CMD ["gulp watch-dev"] # command 2 not executed
誰かがこれをどのように解決できるか知っていますか?
この場合は、監督者になることをお勧めします。 http://supervisord.org/
編集:httpdとsshデーモンのドッキングされた例を次に示します。 https://riptutorial.com/docker/example/14132/dockerfile-plus-supervisord-conf
ここでの答えはRUN nginx -g 'daemon off;'
は意図的にnginxをフォアグラウンドで開始しているため、2番目のコマンドがブロックされています。このコマンドは、これをフォアグラウンドプロセスとして使用して、Dockerコンテナーを起動することを目的としています。ランニング RUN nginx
はnginxを起動し、マスターノードと子ノードを作成し、(うまくいけば)ステータスコード0で終了します。上記のように、これはrunの使用目的ではないため、この場合はbashスクリプトが最適に機能します。