Как из контейнера docker получить ip и порт, на котором хостится этот контейнер на хостинге?
пишу сайт-сократитель ссылок в качестве учебного проекта (впервые в жизни делаю сайт и уж тем более контейнеризирую что-то). Сайт принимает на вход данные и генерирует для них короткую ссылку, которая состоит из, собственно, генерируемой части и адреса сервера сайта. Я собрал образ для сайта, загрузил его на докер хаб и развернул сайт на хостинге. Всё заработало, но вылезла одна большая проблема: сайт берёт ip из окружения в контейнере, и поэтому он как бы виден, на него можно зайти и даже получить ссылку, но ссылка сгенерируется с помощью внутреннего ip контейнера, и поэтому она будет нерабочей. Как мне программно получить внешний ip и порт (их генерация зависит от хостинга), на которых хостится сайт? И если это неэффективный вариант, то какие есть альтернативы (я думал купить домен и сделать всё через него, но не уверен, что это сработает)?
Дополнительно:
Вся суть докера в том, чтобы контейнер был изолирован от хоста и не мог про него ничего узнать.
Ответы:
Правильный вариант - не завязываться ни на какие айпишники, особенно локальные. Нужен домен, да - но есть и бесплатные варианты, если покупать не хочется.
используй домен.
для теста можно заюзать sslip.io
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы получить IP и порт контейнера Docker, на котором он хостится на хостинге, можно воспользоваться несколькими способами.
1. Используя команду docker inspect:
```php
docker inspect
```
Где - это ID вашего контейнера. В выводе этой команды вы найдете информацию о сетевых настройках контейнера, включая IP адрес и порты.
2. Используя команду docker port:
```php
docker port
```
Эта команда покажет вам все порты, которые проброшены из контейнера на хост, включая внешний порт и внутренний порт контейнера.
3. Используя команду docker network inspect:
```php
docker network inspect
```
Если ваш контейнер находится в сети Docker, вы можете использовать эту команду для получения информации о сетевых настройках, включая IP адреса контейнеров.
4. Используя переменные окружения:
Если вы хостите контейнер на хостинге и у вас есть доступ к его настройкам, вы можете пробросить IP адрес и порт контейнера через переменные окружения. Например, вы можете установить переменные окружения в Dockerfile:
```php
ENV CONTAINER_IP ENV CONTAINER_PORT
```
Затем вы сможете получить доступ к этим переменным из контейнера.
Надеюсь, эти способы помогут вам получить IP и порт контейнера Docker на хостинге. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.