Ответ
В экосистеме Docker используются два основных конфигурационных файла для разных целей: Dockerfile для сборки образов и docker-compose.yml для управления многоконтейнерными приложениями.
1. Dockerfile
Это текстовый файл, содержащий набор инструкций для автоматической сборки образа Docker. Он описывает среду внутри одного контейнера: базовую ОС, зависимости, исходный код, переменные окружения и команду для запуска.
Ключевая команда: docker build
Пример Dockerfile для Python-приложения:
# 1. Устанавливаем базовый образ
FROM python:3.9-slim
# 2. Задаем рабочую директорию внутри контейнера
WORKDIR /app
# 3. Копируем файл зависимостей и устанавливаем их
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 4. Копируем остальной исходный код
COPY . .
# 5. Команда, которая будет выполняться при запуске контейнера
CMD ["python", "./main.py"]
2. docker-compose.yml
Это YAML-файл для определения и запуска многоконтейнерных приложений. Он описывает сервисы (контейнеры), сети для их взаимодействия, тома для хранения данных и другие параметры их совместной работы.
Ключевая команда: docker-compose up
Пример docker-compose.yml для веб-приложения и базы данных:
# Версия синтаксиса
version: '3.8'
# Определение сервисов (контейнеров)
services:
# Сервис веб-приложения
web:
# Собрать образ из Dockerfile в текущей директории
build: .
# Пробросить порт 8000 хоста на порт 80 контейнера
ports:
- "8000:80"
# Сервис базы данных
db:
# Использовать готовый образ PostgreSQL
image: postgres:13
# Переменные окружения для настройки базы данных
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Сводка
| Критерий | Dockerfile |
docker-compose.yml |
|---|---|---|
| Назначение | Сборка одного образа | Управление несколькими контейнерами (сервисами) |
| Синтаксис | Набор инструкций | YAML |
| Команда | docker build |
docker-compose up |