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