Приложение рядом в Docker
Приложение рядом слушает порт
8000
во внутренней сети
и не публикует его
на компьютер.
Соседний контейнер
или тот же сервис изнутри
может обратиться
по имени app,
а браузер на хосте
к этому порту
напрямую не подключится.
Каталог app
содержит главную страницу
со словом hello:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>page</title>
</head>
<body>
hello
</body>
</html>
Сервис app
берёт образ python:3.14,
монтирует папку
в /app
и запускает
встроенный модуль
http.server
с привязкой
0.0.0.0
на 8000.
Файл compose.yaml
без ключа ports
у приложения:
services:
app:
image: python:3.14
volumes:
- "$PWD/app:/app"
working_dir: /app
command: ["python", "-m", "http.server", "8000", "--bind", "0.0.0.0"]
После подъёма в фоне проверим ответ изнутри той же копии, куда браузер с компьютера пока не дойдёт. Запуск проекта:
docker compose up -d
Запрос к локальному адресу
внутри сервиса
вернёт разметку
со словом hello:
docker compose exec app python -c "import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:8000/').read().decode())"
Опишите сервис land на python:3.14 с каталогом app и ответом land на порту 8000 без публикации портов на хост.
Убедитесь изнутри контейнера, что на 8000 отдаётся ваш текст.