0

Flask、Docker、Google Container Engineを使用して簡単なWebアプリケーションを構築しようとしています。私は、次のDockerFileを指定している:Google Container Engine公開サービス「サイトにアクセスできません」

from flask import Flask, jsonify 
from flask import make_response 

app = Flask(__name__) 

tasks = [ 
    { 
     'type': 'order', 
     'contents':[1,2,3,4,5,6,7,8,9,10] 
    } 
] 

@app.route('/', methods=['GET']) 
def get_tasks(): 
    return jsonify({'tasks': tasks}) 

@app.errorhandler(404) 
def not_found(error): 
    return make_response(jsonify({'error': 'Not found'}), 404) 

if __name__ == '__main__': 
    app.run(host='0.0.0.0', port=8080) 

host='0.0.0.0'port=8080:私はここではポート8080

を露出させています

# Use an official Python runtime as a base image 
FROM python:2.7-slim 

# Set the working directory to /app 
WORKDIR /app 

# Copy the current directory contents into the container at /app 
ADD . /app 

# 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 8080 

# Define environment variable 
ENV NAME World 

# Run app.py when the container launches 
CMD ["python", "app.py"] 

注意は私の簡単なフラスコアプリケーションです。

私は成功し、ローカルにドッカコンテナを実行します。

docker run --rm -p 8080:8080 gcr.io/${PROJECT_ID}/hello-node:v1 

私はGoogleのコンテナエンジンを使用してアプリケーションをデプロイする場合しかし、私はkubectl get serviceが提供する外部ポートを介してアプリケーションにアクセスすることはできませんよ。

私はデプロイするには、次を実行Pod

kubectl run hello-world --image=gcr.io/${PROJECT_ID}/hello-node:v1 --port 8080 

私は、インターネットからアクセスするためにServiceを作成するには、次のコマンドを実行します。

kubectl expose deployment hello-world --type=LoadBalancer --port 8080 

をなぜ私がアクセスすることはできませんよサービス?私はすべてのステップ内でポート8080を開いたようです。1)Flaskアプリケーション2)Dockerfile 3)Pod配置4)Service作成。

+1

を役に立てば幸い:// $(kubectlはhello-world -o jsonpath = '{status.loadBalancer.ingress [0] .ip}'):8080'を取得しますか? – Tribal

答えて

1

私はあなたの展開を露光する際、あなたはこのように、同様にターゲットポートを指摘しなければならないと思う:

kubectl expose deployment hello-world --type=LoadBalancer --port=8080 --target-port=8080 

が、それは `カール-I -v HTTPの出力は何

+0

こんにちはJahongir。これありがとう。次のコマンドを実行しました。kubectl展開のhello-world --type = LoadBalancer --port 8080 --target-port 8080'を実行しましたが、まだ接続できません。 – Scott

+0

違いがあるのか​​どうかはわかりませんが、 ' - 'を '--port'と' 8080'の間に入れていません。 '--port = 8080 --target-port = 8080'で試してみることができますか? –

関連する問題