React, Docker, 런타임 환경 변수
문제
컨테이너화된 반응 앱은 가장 일반적으로 정적 서빙
nginx
을 사용하므로 런타임에 환경 변수를 javascript에 직접 전달할 방법이 없습니다.마구 자르기
수정된 런타임
<script>
에 index.html
블록을 추가하고 환경 변수를 로드합니다.따라서 우리
index.html
는 다음과 같아야 합니다.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>ReactApp</title>
<base href="/" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<script>
window.env = {};
/*ENV_BEGIN*/`
`/*ENV_END*/
.split('\n')
.map((kv) => kv.split('='))
.forEach(([key, value]) => {
window.env[key] = value;
});
</script>
</head>
<body>
<div id="root"></div>
</body>
</html>
이렇게 하면 제공된 변수가
window.env
에 로드됩니다.다음은
Dockerfile
접두사가 붙은 환경 변수를 제공하는 예REACT_APP_
입니다.FROM nginx:alpine
WORKDIR /usr/share/nginx/html
COPY ./dist/apps/react-app .
RUN printf "server {\n\
listen 80;\n\
location / {\n\
root /usr/share/nginx/html;\n\
try_files \$uri \$uri/ /index.html;\n\
add_header Cache-Control \"no-store, no-cache, must-revalidate\";\n\
}\n\
}\n" > /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD sed -i '/\/\*ENV_BEGIN\*\/`/r '<(env | grep --color=never "^REACT_APP_") index.html; nginx '-g daemon off;'
작업 예
nx
here에서 전체 작업 예제를 찾을 수 있습니다.
Reference
이 문제에 관하여(React, Docker, 런타임 환경 변수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/noctifer20/react-docker-runtime-environment-variables-7l7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)