Почему порты не маршрутизируются к контейнеру?

Какая структура docker yml-файла будет правильной для сборки приложения Django с использованием Docker?
  • 1 января 2024 г. 18:47
Ответы на вопрос 2
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`.
Похожие вопросы