私は最近、珍しい(私に)ケースに触れました。たぶんあなたはそれを修正する方法を知っているかもしれません。
Dockerコマンドを実行してUbuntuコンテナを起動するシェルスクリプトがあります。このコンテナは最終的にゲストBashを実行し、Webサーバーを含むいくつかのシステムサービスを起動します。ゲスト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 ...
しません。
仕事を動かす方法はありますか?
答え1
バックグラウンドで初期遅延後にWebブラウザを実行できます。
(sleep 2 && python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
私はこれのためにこれを行いますグリップ用ドッカーラッパーホストのコンテナが提供する追加情報を見ると、うまくいきました。コンテナの起動に必要な時間によって異なります。
答え2
使用されるバージョンですカールコンテナのサーバーが起動したら、ブラウザを起動します。
(curl --silent --retry 30 --retry-delay 1 --retry-connrefused \
http://localhost:$PORT && \
python -m webbrowser http://localhost:$PORT) &
docker run -it -p $PORT:80 -v $ROOT:/usr/share/nginx $PROJECT
カール30秒間1秒ごとに接続しようとした後、あきらめてください。これが発生すると、ブラウザはまったく起動しません。ブラウザが無条件に実行されるようにするには、を&&
置き換えます;
。