Доступ к приложению из интернета
Приложение в контейнере по умолчанию доступно только внутри машины. Чтобы открыть его из интернета, нужно опубликовать порт — тогда кабинет покажет готовый адрес, по которому приложение и открывается.
1. Опубликуйте порт в манифесте
Порт задаётся в манифесте приложения — это файл с описанием сборки, который панель отдаёт агенту.
Compose. В docker-compose.yml приложения у нужного сервиса добавьте публикацию:
services:
web:
build: .
ports:
- "8080:8080" # внешний:внутренний — приложение слушает 8080 внутри контейнера
Dockerfile. Укажите порт при добавлении приложения: поле «Порт приложения». Панель сама соберёт
run_args с публикацией:
{
"app": "myapp",
"repo_url": "https://github.com/user/repo.git",
"branch": "main",
"dockerfile": "Dockerfile",
"tag": "apploy/myapp:latest",
"run_args": ["-p", "8080:8080"]
}
Адрес перед портом не указывайте: -p 8080:8080 публикует порт на всех интерфейсах машины, и
приложение открывается по http://<адрес машины>:8080. Запись -p 127.0.0.1:8080:8080 оставляет
порт только внутри машины — снаружи он не откроется (панель предупредит об этом при проверке).
Публиковать можно только порты самого приложения: платформа не разрешает монтировать системные каталоги, использовать привилегированный режим и сеть хоста (см. статью о манифестах).
2. Посмотрите адрес в кабинете
После запуска откройте Приложения или дашборд: платформа показывает
- внешний адрес машины, на которой живут ваши приложения (например
185.133.42.82); - порт, который опубликован приложением (например
8080); - готовую ссылку вида
http://185.133.42.82:8080.
Для подписки машину держит платформа, поэтому адрес может меняться только при переезде — в кабинете всегда актуальный. Для заказанной ВМ адрес видён в её карточке.
3. Проверьте снаружи
- Нажмите Проверить с сервера у приложения: платформа пробует порт сама и показывает, отвечает ли TCP и что возвращает HTTP. Так видно результат «с той стороны», а не только со слов агента.
- Откройте адрес в браузере с телефона или с другого компьютера — так проверяется доступ из интернета, а не изнутри машины.
Если не открывается
| Что видно | Причина | Что делать |
|---|---|---|
| Порт в кабинете не показан | контейнер не публикует порт | добавьте ports в compose или укажите порт при добавлении приложения |
| Порт есть, но TCP не отвечает | приложение слушает 127.0.0.1 внутри контейнера |
слушайте 0.0.0.0 (в Django: --bind 0.0.0.0:8080, в Node/Express: app.listen(port, '0.0.0.0')) |
| В кабинете «порт опубликован только на 127.0.0.1» | порт привязан к localhost машины (-p 127.0.0.1:8080:8080) |
уберите адрес: -p 8080:8080, затем «Перезапуск» или «Развернуть» |
| Контейнер перезапускается | ошибка в приложении или не заданы переменные | откройте Логи у приложения |
| По адресу открывается не то | в контейнере несколько сервисов, порт занят другим | опубликуйте разные порты: 8081:8080, 8082:3000 |
Внешний адрес заказанной ВМ
Если у вас своя машина, вы управляете доступом сами: публикация портов в compose или Dockerfile, затем правила файрвола внутри гостевой системы. Платформа не ограничивает ваш файрвол — это ваша машина. Панель показывает публичный адрес и состояние, а что и как открывать наружу — ваше решение.
Свой домен
Первым шагом достаточно адреса и порта. Домен подключается на стороне вашего приложения или вашей машины (обратный прокси: nginx, Caddy, Traefik), и это отдельная задача — она не входит в подписку.