Githubリポジトリのすべてのコミットにおける平均サイクロマティック複雑度を計算する基本的な分散システムを持っています。 Flask上で動作するマスターノードで構成され、マスタノードにGETリクエストを送信するときに、一連のワーカノードにSHA IDを提供します。実行中のDockerコンテナの内部からHTTPリクエストを送信することは可能ですか?
私はDockerでいくつかの練習をしようとしていましたが、Dockerコンテナにワーカーコードを入れて、そのコンテナをリモートマシンのセットに置き、ローカルマシンでMasterを実行させたいとしました。私は労働者とマスターがお互いにコミュニケーションできるようにしたいと思っていました。
私はこれを行う方法については明確ではありません。私はローカルマシンのパブリックIPとFlaskサーバーが稼働しているポート(5000)にリクエストを送信するようにワーカーノードに指示してみました。リモートマシンのポート5000をDockerコンテナのポート5000にマップしました。それは私がここで知っている程度です。私はプログラム全体をコピーしてコピーすることなく、関連するコードスニペットを以下に添付します。
マスターのセットアップ:
if __name__ == '__main__':
get_commits()
TOTAL_COMMITS = len(JOB_QUEUE)
app.run(host='0.0.0.0', port=5000, debug=False)
print('\n-----Shutting Down Server-----')
calc_avg_cc()
ワーカーのURL:
master_url = 'http://<my public ip>:5000/'
node_setup_url = 'http://<my public ip>:5000/init'
-------------------------- -----------編集---------------------------------
As @odkと@jonasheinischは、実際にはネットワークエラーであることを示唆していました。私は私の大学のネットワークにあったリモートマシンに私のドッカーコンテナを配備していました。私は2つのAWSインスタンスを作成しました.1つはマスター用、もう1つはWorker's用です。
私は今すぐセットアップを更新し、要求どおりにもう少しコンテキストを提供します。私がまだ分かっていないことの一つは、私の労働者からの私の要求が私のマスターにそれをいかにして行っているかです。 Dockerコンテナのポート80に、ホスト上のポート80をマップしました。下のDockerファイルに示されています。ポート80は、HTTPトラフィックに関連付けられていることがわかっているため、推測のビットとして選択しました。
Dockerfile:
# Use an official Python runtime as a parent image
FROM python:3.5-slim
# Set the working directory to /worker
WORKDIR /worker
# Copy the current directory contents into the container at /app
ADD worker.py requirements.txt github-token ./
# Install any needed packages specified in requirements.txt
RUN pip install -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Run app.py when the container launches
CMD ["python", "worker.py"]
新しいワーカーのセットアップ:
master_url = 'http://<public IP of my AWS Master Instance>:5000/'
node_setup_url = 'http://<public IP of my AWS Master Instance>:5000/init'
マスターは、まだどのように正確に(Pythonの要求ライブラリーから送信された)私の要求はそれを作るのですポート5000上のすべてのインターフェイスでリッスンしていますDockerコンテナの外にインターネットがありますか?
短い答え:はい - もちろんです。 Dockerコンテナからデータを送信することは、まったく可能です。 特定の質問がある場合。何が動作していないか、何をやっているのか、物事がセットアップされているかなどの詳細情報で質問を更新してください。 –
セットアップでは、それはそのままで動作するはずです。リモートマシンからローカルマシンのポート5000(ドッカーなし)に接続できますか?カールやwgetで簡単にテストできます。私にとっては、ネットワーク関連の問題のように見えます。 – odk
@TJBiddle私はうまくいけば、もう少し文脈を提供するように編集しました –