[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-docker-kak-peredavat-peremennye-okruzheniya-i-konfiguratsiyu-v-docker-konteyner":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},717,"kak-peredavat-peremennye-okruzheniya-i-konfiguratsiyu-v-docker-konteyner",17,"docker","Docker","🐳","Как передавать переменные окружения и конфигурацию в Docker-контейнер?","Переменные окружения — это основной механизм конфигурирования Docker-контейнеров, позволяющий менять поведение приложения без пересборки образа.\n\n### 1. Через флаг -e при запуске\n\n```bash\ndocker run -e SPRING_PROFILES_ACTIVE=prod \\\n           -e DB_PASSWORD=secret \\\n           my-spring-app\n```\n\n### 2. Через файл с переменными окружения\n\n```bash\n# .env файл\nSPRING_PROFILES_ACTIVE=prod\nDB_HOST=postgres\nDB_PORT=5432\nDB_PASSWORD=secret\n\ndocker run --env-file .env my-spring-app\n```\n\n### 3. Через ENV в Dockerfile (значения по умолчанию)\n\n```dockerfile\nENV SPRING_PROFILES_ACTIVE=dev\nENV JAVA_OPTS=\"-Xmx512m\"\n```\n\n### 4. Через ARG + ENV (параметризация при сборке)\n\n```dockerfile\nARG APP_VERSION=1.0\nENV APP_VERSION=${APP_VERSION}\n```\n\n```bash\ndocker build --build-arg APP_VERSION=2.0 -t myapp .\n```\n\n### 5. Через Docker Compose\n\n```yaml\nservices:\n  app:\n    environment:\n      SPRING_PROFILES_ACTIVE: prod\n    env_file:\n      - .env\n```\n\n### 6. Монтирование файлов конфигурации\n\n```bash\ndocker run -v .\u002Fapplication-prod.yml:\u002Fapp\u002Fconfig\u002Fapplication.yml my-spring-app\n```\n\n### Как Spring Boot использует переменные окружения\n\nSpring Boot автоматически маппит переменные окружения в свойства конфигурации через relaxed binding:\n- `SPRING_DATASOURCE_URL` -> `spring.datasource.url`\n- `SERVER_PORT` -> `server.port`\n\n```bash\ndocker run -e SERVER_PORT=9090 \\\n           -e SPRING_DATASOURCE_URL=jdbc:postgresql:\u002F\u002Fdb:5432\u002Fmydb \\\n           -e SPRING_DATASOURCE_USERNAME=admin \\\n           -e SPRING_DATASOURCE_PASSWORD=secret \\\n           -p 9090:9090 \\\n           my-spring-app\n```\n\n### Безопасность секретов\n\nНикогда не храните секреты (пароли, токены, ключи) в Dockerfile через ENV или ARG — они будут видны в истории образа (`docker history`). Используйте переменные окружения при запуске, Docker secrets или внешние системы управления секретами (Vault, AWS Secrets Manager).\n\n> **На собеседовании:** перечислите способы от простого к сложному: -e флаг, --env-file, ENV в Dockerfile, Docker Compose environment. Обязательно упомяните relaxed binding в Spring Boot и проблему безопасности — секреты нельзя зашивать в Dockerfile.","","junior",[15,16,17,7,18],"security","configuration","spring-boot","environment-variables",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":36,"featuredSnippetReady":37},"Переменные окружения и конфигурация в Docker — Gymterview","Способы передачи конфигурации в Docker-контейнер: флаг -e, --env-file, ENV в Dockerfile, ARG, Docker Compose, монтирование файлов. Spring Boot relaxed binding.","Переменные окружения в Docker — Gymterview","Способы конфигурирования Docker-контейнера: -e, --env-file, ENV, ARG, Compose. Spring Boot relaxed binding и безопасность секретов.",[27,28,29,30,31,32,33,34,35],"Docker переменные окружения","docker run -e","env-file","Docker ENV","Docker ARG","Spring Boot конфигурация","relaxed binding","секреты Docker","собеседование","Способы: 1) docker run -e KEY=VALUE, 2) docker run --env-file .env, 3) ENV в Dockerfile (значения по умолчанию), 4) ARG + ENV (параметризация при сборке), 5) Docker Compose environment\u002Fenv_file, 6) монтирование файлов конфигурации (-v). Spring Boot автоматически маппит переменные через relaxed binding: SPRING_DATASOURCE_URL → spring.datasource.url. Секреты нельзя зашивать в Dockerfile (видны в docker history) — передавайте при запуске или через Docker Secrets.",true]