Работает приложение с `eb local run`, но на самом деле не могу подключиться к приложению - PullRequest
1 голос
/ 10 июня 2019

У меня очень простое приложение Flask, запущенное в одном док-контейнере.Когда я запускаю приложение, используя eb local run, оно «работает» в том смысле, что создается образ докера, и в итоге я вижу вывод журнала из фляги, сообщающий мне, что он готов для запросов.Но когда я на самом деле пытаюсь запросить работающее приложение, запросы сразу же завершаются с ошибками, говорящими «сайт не может быть достигнут».Кажется, что приложение работает в контейнере, но как-то порты отображаются неправильно?Кроме того, когда я запускаю его, используя docker run ..., он работает полностью, и я могу запросить приложение.

Используемая команда: eb local run --port 5000 --envvars APP_ENV=LOCAL

Мой Dockerrun.aws.json:

{
    "AWSEBDockerrunVersion": "1",
    "Ports": [
    {
      "ContainerPort": 5000,
      "HostPort": 5000
    }
  ]
}

Мой Dockerfile:

FROM python:3

COPY . /app

WORKDIR /app

RUN pip install -r requirements.txt

EXPOSE 5000

ENTRYPOINT [ "python" ]

CMD [ "application.py" ]

Мой .elasticbeanstalk / config.yml:

branch-defaults:
  python3:
    environment: fs-service-prod
environment-defaults:
  fs-service-prod:
    branch: null
    repository: null
global:
  application_name: followspot-service
  default_ec2_keyname: null
  default_platform: arn:aws:elasticbeanstalk:us-east-1::platform/Docker running on
    64bit Amazon Linux/2.12.11
  default_region: us-east-1
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: null
  sc: git
  workspace_type: Application

Вывод eb local status:

Platform: 64bit Amazon Linux 2018.03 v2.12.11 running Docker 18.06.1-ce
Container name: 6739a687fa2d18f1c683926f024c88bed9f5c6c7
Container ip: 127.0.0.1
Container running: True
Exposed host port(s): 5000
Full local URL(s): 127.0.0.1:5000

Большое спасибо за любую помощь, которую вы можете оказать мне, и дайте мне знать, если есть хороший способ получить более полезную информацию.

1 Ответ

0 голосов
/ 17 июня 2019

Разобрался! Оказывается, это была проблема с тем, как я запускал свое приложение Flask. Поскольку по умолчанию колба работает на 127.0.0.1, а Docker по умолчанию пытается подключиться к 0.0.0.0, мне нужно было изменить способ запуска приложения в моем Dockerfile.

Вместо:

ENTRYPOINT [ "python" ]

CMD [ "application.py" ]

Мне пришлось изменить его на:

ENV FLASK_APP application.py
ENTRYPOINT ["python", "-m", "flask", "run", "--host=0.0.0.0"]

Тогда все заработало как положено.

...