Что произойдёт, если не указать EXPOSE для портов в Dockerfile
Python
Senior
Без компании
Что произойдёт, если не указать EXPOSE для портов в Dockerfile
Ответы
Если не указать `EXPOSE` в Dockerfile, контейнер всё равно сможет прослушивать указанные порты. Однако, `EXPOSE` выполняет две ключевые функции:
- **Документирование** — показывает, какие порты предназначены для работы приложения.
- **Автоматическое пробрасывание** — при запуске контейнера с `-P` (рандомный порт), Docker автоматически связывает указанные в `EXPOSE` порты с хостом.
Без `EXPOSE` порты останутся доступными только внутри сети контейнера или если явно указать `-p` при запуске.
**Пример:**
```
FROM python:3.9
CMD ["python", "-m", "http.server", "8000"]
```
Здесь сервер слушает порт 8000, но без `EXPOSE 8000` придётся вручную указывать `-p 8000:8000` при запуске.