私は最近、1つの重要な(私にとって)ケースに直面しました。多分あなたはそれを解決する方法を知っています。
Dockerコマンドを実行してUbuntuコンテナーを起動するシェルスクリプトがあります。これにより、Webサーバーを含む一部のシステムサービスを起動するゲストBashが実行されます。ゲストBashが初期化された後、ホストマシンでWebブラウザーを開きたいと思います。現在、次のようになっています。
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
python -m webbrowser http://localhost:$PORT
しかし、スクリプトはdocker
が終了してpython
を開始するまで待機するため、明らかにうまくいきません。ゲストBash(およびWebサーバー)が起動する前にWebサイトが読み込まれるため、それらを交換しても機能しません。同時に、Dockerを-it
で実行する必要があるため、docker ... & python ...
も機能しません。
物事を機能させる方法はありますか?
バックグラウンドで最初の遅延が発生した後、Webブラウザを実行できます。
(sleep 2 && python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
これは グリップ用のdockerラッパー で、ホスト内のコンテナーによって提供されるREADMEを表示するために行いますが、正常に機能します。ただし、コンテナの起動に必要な時間によって異なります。