Образ докера, не запущенный на хосте 8050

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