#python #docker #plotly-dash
Вопрос:
Я пытаюсь научить себя развертывать приложение dash на AWS.
Я создал папку «DashboardImage» на своем mac, которая содержит файл Dockerfile, README.md, requirements.txt и папка приложения, содержащая мое приложение python dash ‘dashboard.py».
Мой док-файл выглядит так:
Я захожу в папку DashboardImage и запускаю
docker built -t conjoint_dashboard .
Он успешно построен, и если я запущу изображения docker, я смогу увидеть детали изображения.
Когда я пытаюсь
docker run conjoint_dashboard
Терминал сообщает мне, что Dash работает на http://0.0.0.0:8050/ но это не подключается.
Я не могу понять, почему.
Ответ №1:
Обновите его в соответствии с вашим портом, например, если ваше приложение предоставляет порт 8050
, то:
docker run -p 8050:8050 conjoint_dashboard
где -p = publish first one is the HOST port, and the second is the CONTAINER port.
Также вы можете обновить свой файл dockerfile:
FROM: continuumio/minicoda3
...
EXPOSE 8080/tcp
...
В EXPOSE
инструкции на самом деле нет publish
порта. Он функционирует как тип документации между человеком, создающим образ, и человеком, который запускает контейнер, о том, какие порты предназначены для публикации.
Чтобы фактически опубликовать порт при запуске контейнера, используйте -p
флаг при запуске docker для публикации и сопоставления одного или нескольких портов или -P
флаг для публикации всех открытых портов и сопоставления их с портами высокого порядка.
По умолчанию EXPOSE предполагает TCP. Вы также можете указать UDP:
Ответ №2:
Вам нужно открыть порт, см.: https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port—p—expose
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
Это связывает порт 8080 контейнера с TCP-портом 80 на 127.0.0.1 хост-машины. Вы также можете указать порты udp и sctp. В Руководстве пользователя Docker подробно объясняется, как управлять портами в Docker.