1. Чтобы порты могли быть маршрутизированы к контейнеру, необходимо правильно настроить проброс портов между хостовой машиной и контейнером. Это можно сделать при запуске контейнера с помощью флага `-p` или `--publish`, указывая порт хоста и порт контейнера. Например, `docker run -p 8000:8000 <image>` пробрасывает порт 8000 с хоста на порт 8000 контейнера.
2. Для сборки приложения Django с использованием Docker, правильная структура docker-compose.yml файла может выглядеть следующим образом:
```yml
version: '3'
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:8000
volumes:
- .:/code
depends_on:
- db
db:
image: postgres:latest
```
В данном примере:
- `web` - это имя сервиса для контейнера с приложением Django,
- `build` - путь к Dockerfile, который используется для сборки образа,
- `ports` - пробрасываем порт 8000 для доступа к приложению,
- `volumes` - монтируем текущую директорию в `/code` контейнера, что позволяет изменять код приложения без перезапуска контейнера,
- `depends_on` - зависимость от сервиса `db` (Postgres база данных).
Указанный файл docker-compose.yml может быть использован для запуска приложения Django с помощью команды `docker-compose up`.