大家好。我的问题如下。我们使用NextJS应用程序,SSR作为我们服务的前端。我们希望通过docker镜像在AWS App Runner上部署所有内容。在本地,前端容器注册我们在.env.local中的所有env变量,但在App Runner上,所有的env变量都会变成undefined
当然,我们不希望在生产中使用.env文件。我们在App Runner的配置服务中设置了所有env变量,并使用NEXT_PUBLIC
前缀,就像我们在SSR中应该使用的那样。但仍然一无所获。
有人对如何从这里开始有什么建议吗?
一种解决方案是在构建时使用Docker--build-args
:定义公共环境变量
docker build --build-arg="CLIENT_VAR_FOO=foo" --build-arg="CLIENT_VAR_BAR=bar" ...
Dockerfile:
ARG CLIENT_VAR_FOO
ARG CLIENT_VAR_BAR
ENV NEXT_PUBLIC_CLIENT_VAR_FOO=${CLIENT_VAR_FOO}
ENV NEXT_PUBLIC_CLIENT_VAR_BAR=${CLIENT_VAR_BAR}
您可以在CI/CD中使用GitHub Actions secrets+环境变量之类的东西来定义它们。