services: # начало объявления сервисов, которые будут запущены postgres: # указываем название сервиса image: postgres:14 # указываем название и/или версии образа Docker для Postgres restart: always # автоматический перезапуск контейнера, если он упал ports: - "5432:5432" # пробрасываем порт 5432 из контейнера на хост-машину # (слева порт хостовой машины, справа порт контейнера) volumes: # указываются монтированные тома, папки, файлы - postgres_data:/var/lib/postgresql/data # монтирует том postgres_data к /var/lib/postgresql/data, # чтобы данные Postgres сохранялись после перезапуска контейнера environment: # задаем переменные окружения для Postgres, такие как: POSTGRES_USER: postgres_user # имя пользователя POSTGRES_PASSWORD: postgres_password # пароль пользователя POSTGRES_DB: postgres_db # имя БД gitea: image: gitea/gitea:1.22.2 restart: always ports: - "3000:3000" # пробрасывает порты 3000 (HTTP, веб-интерфейс) - "222:22" # и 22 (SSH) из контейнера на хост-машину volumes: - gitea_data:/data environment: GITEA__database__DB_TYPE: postgres GITEA__database__HOST: postgres:5432 # хост бд, название сервиса выступает в роли доменного имени и внутри сети разрешается в ip нужного контейнера GITEA__database__NAME: postgres_db GITEA__database__USER: postgres_user GITEA__database__PASSWD: postgres_password depends_on: # указывается зависимость запуска контейнера от другого сервиса - postgres # Gitea зависит от Postgres, поэтому Postgres будет запущен первым - redis redis: image: redis:latest restart: always ports: - "6379:6379" volumes: - redis_data:/data volumes: # определяем тома, которые будут использоваться сервисами postgres_data: gitea_data: redis_data: