Elastic Container Service (ECS) — сервис для запуска контейнеров. ECS позволяет запускать контейнеры в друх режимах:
Elastic Container Registry (ECR) — сервис для хранения образов контейнеров.
Войдите в веб-консоль AWS, выберите регион ap-northeast-1 (Tokyo).
Войдите в сервис Cloud9 и создайте среду (environment):
Откройте созданную интегрированную среду разработки Cloud9.
Создайте новый файл app.py (код в приложении).
В терминале установите пакет Flask:
pip install flask
Запустите приложение (кнопка Run), проверьте его работу в превью (кнопка Preview), затем остановите его.
Создайте Dockerfile (код в приложении).
В терминале создайте образ контейнера:
docker build -t <группа>-<фамилия> .
docker images
Запустите контейнер в терминале и проверьте его работу в превью (кнопка Preview):
docker run --name testing -p 8080:80 <группа>-<фамилия>
Откройте второй терминал и остановите контейнер:
docker stop testing
Откройте в новой вкладке браузера сервис ECR (Elastic Container Registry), перейдите в раздел Private Registry, Repositories, создайте приватный репозиторий образов и зафиксируйте его URI.
<группа>-<фамилия>Вернитесь в Cloud9 и в терминале добавьте тег в созданный ранее образ:
docker tag <группа>-<фамилия>:latest <URI репозитория в ECR>:latest
В терминале авторизуйтесь в приватном реестре ECR:
aws ecr get-login-password | docker login --username AWS --password-stdin 496008581975.dkr.ecr.ap-northeast-1.amazonaws.com
В терминале отправьте образ в реестр:
docker push <URI репозитория в ECR>:latest
Откройте сервис ECS (Elastic Container Serivce), перейдите в раздел Task definitions, создайте новое описание задачи (task definition):
<группа>-<фамилия><группа>-<фамилия><URI репозитория в ECR>В сервисе ECS (Elastic Container Serivce), перейдите в раздел Clusters, создайте кластер ECS.
<группа>-<фамилия>Откройте созданный кластер, перейдите в раздел Tasks и создайте задачу (Run new task):
Откройте созданную задачу (не путать с описанием задачи), найдите её публичный адрес и проверьте работу в браузере по протоколу HTTP.
app.py:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
Dockerfile:
FROM python:slim
COPY . .
RUN pip install flask gunicorn
CMD gunicorn --bind 0.0.0.0:80 app:app