우리는 최소 10년 동안 컨테이너에서 작동하는 애플리케이션을 개발해 왔습니다. 이 접근 방식의 장점과 단점은 고려하지 않고 애플리케이션 유연성에 중점을 두고 싶습니다. 거의 모든 종속성, 즉 Postgres, MySql, Redis 등과 같은 스토리지 컨테이너를 사용하면 환경 변수를 통해 대부분의 구성 속성을 재정의할 수 있습니다. Docker 컨테이너는 컨테이너에서 환경 변수를 사용하도록 자극합니다. 그러나 잘 알려진 서비스 프로그래머와는 달리 자신만의 접근 방식으로 맞춤형 애플리케이션을 개발합니다. 저는 JSON 구성 파일을 사용하여 애플리케이션을 구성하는 것을 선호합니다. 하지만 구성 파일에 100개 이상의 속성이 있으면 어떻게 해야 합니까? 각 속성에 대해 환경 변수를 사용할 수 없습니다. 대신 JSON 구성 파일을 작업 기본값이 있는 템플릿으로 사용하고 적절한 환경 변수가 설정된 경우 애플리케이션 시작 시 속성을 재정의하기로 결정했습니다.
요즘에는 단일 Docker 이미지를 사용하지 않습니다. 우리는 docker-compose와 같은 단순한 오케스트레이션을 선호합니다. docker-compose에서는 일반적으로 .env 파일을 생성합니다. 이전에 언급했듯이 환경 변수는 Postgres 또는 MySQL과 같은 잘 알려진 이미지에서 잘 작동합니다. 기본값을 사용하여 절대적으로 작동하는 템플릿으로 사용하는 다음 애플리케이션 구성(JSON)이 있다고 가정해 보세요.
{ "server": { "address": "0.0.0.0", "port": 8182 }, "logging": { "level": "info", "http_log": false, "http_console_out": false } }
이 값은 무엇이든 재정의할 수 있어야 합니다. 디버깅하고 HTTP 로깅을 활성화하려면 로그 수준을 높여야 한다는 점을 고려하세요. 이 작업을 쉽게 수행하려면 특별한 이름 패턴이 있는 기술적인 환경 변수를 만들어야 합니다.
이 go 패키지를 사용하면 해야 할 모든 작업을 매우 쉽게 수행할 수 있습니다.
# all previous variables __logging.level="debug" __logging.http_log=true
그게 다입니다. GitHub에서 별표를 남겨주세요
이 접근 방식과 패키지는 컨테이너화된 애플리케이션뿐만 아니라 기본적으로 실행되는 앱에도 사용할 수 있습니다. 이 패키지는 인증 서버에서 성공적으로 작동하고 있습니다.
위 내용은 환경 변수로 Go 앱 구성 재정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!