web-dev-qa-db-ja.com

Dockerコンテナーを起動し、ホストでWebブラウザーを開きます

私は最近、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 ...も機能しません。

物事を機能させる方法はありますか?

3
VisioN

バックグラウンドで最初の遅延が発生した後、Webブラウザを実行できます。

(sleep 2 && python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT

これは グリップ用のdockerラッパー で、ホスト内のコンテナーによって提供されるREADMEを表示するために行いますが、正常に機能します。ただし、コンテナの起動に必要な時間によって異なります。