Skip to content

DianaMateuk/docker_lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker_lab

Проект включает в себя следующие компоненты:

  • app/: Исходный код приложения на FastAPI.
  • migrations/: Скрипты миграций базы данных, управляемые с помощью Alembic.
  • .env: Файл для настройки переменных окружения (например, параметры подключения к базе данных).
  • Dockerfile: Инструкции для сборки Docker-образа приложения.
  • docker-compose.yml: Конфигурация для работы с несколькими сервисами в Docker (FastAPI и PostgreSQL).
  • requirements.txt: Список Python-зависимостей для проекта
  • Базовый образ:

FROM python:3.11-alpine Рабочая директория: Мы используем легковесный образ python:3.11-alpine, который содержит минимальный набор библиотек для работы с Python.

WORKDIR /app Устанавливаем рабочую директорию внутри контейнера /app, в которую будут копироваться все файлы приложения.

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

Установка зависимостей: Копируем файл requirements.txt и устанавливаем все зависимости проекта с помощью pip. Для уменьшения размера образа используется флаг --no-cache-dir, чтобы не сохранялись кэши пакетов.

COPY ./app ./app
COPY .env .env
COPY ./migrations ./migrations

Копирование кода приложения: Копируем исходный код приложения, файлы миграций и конфигурации окружения (.env) в контейнер.

RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

Создание непривилегированного пользователя: Создаем нового пользователя appuser и запускаем приложение от его имени. Это помогает повысить безопасность контейнера.

Запуск приложения: Приложение запускается с помощью uvicorn, который запускает сервер FastAPI.

Конфигурация для веб-приложения (web):

Порты: Приложение будет доступно на порту 8000 как внутри контейнера, так и на хост-машине. Переменные окружения: Подключение к базе данных осуществляется с помощью переменных окружения, заданных в .env файле. Зависимость от базы данных: Контейнер с приложением зависит от контейнера с базой данных, и будет запускаться только после того, как база данных будет готова. Тома: Для хранения статических файлов проекта используется том static_data.

Конфигурация для базы данных (db):

Контейнер с базой данных использует официальный образ PostgreSQL, а данные хранятся в томе db_data, что обеспечивает сохранность данных между перезапусками контейнера.

Сетевые настройки:

Все контейнеры работают в одной сети internal, что позволяет безопасно обмениваться данными внутри контейнеров.

Тома: Для сохранения данных между перезапусками контейнеров создаются два тома:

  • db_data — для данных базы данных PostgreSQL.
  • static_data — для хранения статических файлов приложения.

Container memory usage 89.56MB

About

repo for docker lab

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors