[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-docker-kak-organizovat-docker-compose-dlya-java-prilozheniya-s-bazoy-dannykh":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},723,"kak-organizovat-docker-compose-dlya-java-prilozheniya-s-bazoy-dannykh",17,"docker","Docker","🐳","Как организовать docker-compose для Java-приложения с базой данных?","Docker Compose для Java-приложения — это YAML-конфигурация, описывающая все сервисы (приложение, БД, кэш, reverse proxy), их зависимости, health check и ресурсные ограничения.\n\n### Типичная конфигурация: Spring Boot + PostgreSQL + Redis + Nginx\n\n\u003Cdetails>\u003Csummary>Полный docker-compose.yml\u003C\u002Fsummary>\n\n```yaml\nversion: '3.8'\n\nservices:\n  # Nginx как reverse proxy\n  nginx:\n    image: nginx:alpine\n    ports:\n      - \"80:80\"\n    volumes:\n      - .\u002Fnginx\u002Fnginx.conf:\u002Fetc\u002Fnginx\u002Fnginx.conf:ro\n    depends_on:\n      app:\n        condition: service_healthy\n    restart: unless-stopped\n\n  # Spring Boot приложение\n  app:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    ports:\n      - \"8080:8080\"\n      - \"5005:5005\"  # debug порт (только для разработки)\n    environment:\n      SPRING_PROFILES_ACTIVE: docker\n      SPRING_DATASOURCE_URL: jdbc:postgresql:\u002F\u002Fdb:5432\u002Fmydb\n      SPRING_DATASOURCE_USERNAME: admin\n      SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD:-secret}\n      SPRING_DATA_REDIS_HOST: redis\n      JAVA_OPTS: \"-Xmx512m -XX:MaxRAMPercentage=75.0\"\n    depends_on:\n      db:\n        condition: service_healthy\n      redis:\n        condition: service_healthy\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"--no-verbose\", \"--tries=1\", \"--spider\",\n             \"http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fhealth\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 60s\n    restart: unless-stopped\n    deploy:\n      resources:\n        limits:\n          memory: 768M\n          cpus: '1.0'\n\n  # PostgreSQL\n  db:\n    image: postgres:16-alpine\n    ports:\n      - \"5432:5432\"\n    environment:\n      POSTGRES_DB: mydb\n      POSTGRES_USER: admin\n      POSTGRES_PASSWORD: ${DB_PASSWORD:-secret}\n    volumes:\n      - postgres-data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n      - .\u002Fsql\u002Finit.sql:\u002Fdocker-entrypoint-initdb.d\u002Finit.sql:ro\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U admin -d mydb\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n    restart: unless-stopped\n\n  # Redis для кэширования\n  redis:\n    image: redis:7-alpine\n    ports:\n      - \"6379:6379\"\n    command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru\n    volumes:\n      - redis-data:\u002Fdata\n    healthcheck:\n      test: [\"CMD\", \"redis-cli\", \"ping\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n    restart: unless-stopped\n\nvolumes:\n  postgres-data:\n  redis-data:\n```\n\n\u003C\u002Fdetails>\n\n### Файл .env (не коммитится в Git)\n\n```\nDB_PASSWORD=my_secure_password\n```\n\n### Команды для работы\n\n```bash\n# Запуск всей инфраструктуры\ndocker compose up -d\n\n# Пересборка только приложения\ndocker compose up -d --build app\n\n# Просмотр логов приложения\ndocker compose logs -f app\n\n# Остановка с удалением данных\ndocker compose down -v\n```\n\n> **На собеседовании:** покажите, что умеете описать реалистичный стек. Ключевые моменты: health check для всех сервисов, depends_on с condition: service_healthy, вынос секретов в .env файл, именованные тома для данных БД, ограничение ресурсов для JVM-приложения. Это типовая задача на техническом собеседовании для middle\u002Fsenior.","","middle",[15,16,17,18,7],"postgresql","spring-boot","docker-compose","redis",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":33,"featuredSnippetReady":34},"Docker Compose для Spring Boot + PostgreSQL + Redis — Gymterview","Docker Compose для Java-приложения: Spring Boot + PostgreSQL + Redis + Nginx. Health check, depends_on, volumes, ресурсные ограничения, .env для секретов.","Docker Compose для Java: Spring Boot + PostgreSQL + Redis — Gymterview","Полный docker-compose.yml: Spring Boot + PostgreSQL + Redis + Nginx с health check, volumes и ограничением ресурсов.",[27,28,29,30,31,32],"docker-compose Spring Boot","docker-compose PostgreSQL","docker-compose Redis","depends_on service_healthy","Docker Compose Java","собеседование","Типичный стек: Spring Boot (build + environment + healthcheck), PostgreSQL (image + volume + healthcheck), Redis (image + volume + healthcheck), Nginx (reverse proxy). Ключевые моменты: health check для всех сервисов, depends_on с condition: service_healthy, секреты в .env файле (не коммитится), именованные тома для данных БД, ограничение ресурсов (memory, cpus) для JVM-приложения.",true]