0Pricing
Go Academy · Урок

Docker Compose для локальной разработки

Связывание сервиса Go с PostgreSQL и Redis

«Docker Compose для локальной разработки» — бесплатный урок Go Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Зачем нужен Docker Compose?

Docker Compose оркестрирует несколько контейнеров (приложение, база данных, кэш, брокер сообщений) для локальной разработки, воспроизводя среду, похожую на рабочую, без ручной настройки сервисов.

Структура docker-compose.yml

Определите сервисы, сети и тома в YAML-файле:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Горячая перезагрузка с Air

Используйте github.com/air-verse/air для автоматической перезагрузки во время разработки. Подключите исходный код к контейнеру и запускайте air вместо двоичного файла:

app:
  volumes:
    - .:/app
  command: air

Проверки состояния

Определите проверки состояния, чтобы depends_on ожидал полной готовности базы данных, а не только её запуска:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Переопределения для окружения

Используйте docker-compose.override.yml (он объединяется автоматически) для настроек, предназначенных только для локальной среды, оставляя базовый файл чистым для CI:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Именованные сети

Разместите сервисы в общей пользовательской сети для обнаружения сервисов по DNS и имени сервиса:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

Файлы окружения

Используйте ключ env_file, чтобы загрузить файлы .env в контейнер и не хранить секреты в YAML:

app:
  env_file: .env.local

Выполнение команд

Основные команды Compose:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

Заполнение базы данных начальными данными

Подключите файлы SQL с начальными данными к каталогу /docker-entrypoint-initdb.d образа postgres — они выполняются при первом создании контейнера:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Профили

Используйте профили Compose, чтобы запускать необязательные сервисы (например, стек мониторинга) только при необходимости:

services:
  grafana:
    profiles: ["monitoring"]

Compose в непрерывной интеграции

Запускайте интеграционные тесты в непрерывной интеграции с реальными сервисами, используя Compose. GitHub Actions изначально поддерживает Docker Compose; используйте проверки состояния, чтобы дождаться готовности сервисов.

Быстрая проверка

Как обеспечить ожидание контейнером приложения готовности базы данных в Docker Compose?

Итоги: Docker Compose

Основные положения:

  • docker-compose.yml определяет все сервисы, сети и тома
  • Используйте depends_on вместе с healthcheck для проверки готовности сервиса
  • Файлы переопределений предназначены для настроек локальной разработки, а env_file — для секретов
  • Air обеспечивает горячую перезагрузку; подключайте исходный код как том

Часто задаваемые вопросы

Урок «Docker Compose для локальной разработки» бесплатный?

Да — полный текст урока «Docker Compose для локальной разработки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Docker Compose для локальной разработки»?

Связывание сервиса Go с PostgreSQL и Redis Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Docker Compose для локальной разработки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Многоэтапная сборка Docker для Go
  2. Конфигурация окружения и секреты
  3. Docker Compose для локальной разработки
  4. Проверки работоспособности и настройка для эксплуатации
← Назад к Go Academy