我试图部署我的应用程序让公众看到,但我被这一步卡住了。首先,我使用docker容器化了我的React应用程序,并通过--env-file选项为docker run传递我的变量。当我使用CMD [“npm”,“start”]运行应用程序时,这工作得很好,但当我试图为生产更改dockerfile时,该站点是可访问的,但是站点中依赖于环境变量的部分出现故障。
这是我使用的docker文件:
FROM node:latest as build-stage
WORKDIR /app
ADD . .
RUN npm install
RUN npm run build
FROM nginx:latest
COPY --from=build-stage /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
我不确定问题是否出在nginx上,或者我只是误解了React中的构建过程以及环境变量是如何注入其中的。
2条答案
按热度按时间ajsxfq5m1#
映像是一个容器(以node:latest开头),但该容器不继承您的环境变量。您可以使用RUN bash命令或使用ARG/ENV在容器中设置变量。您将需要设置应用运行所需的任何变量,因为它们将被捆绑到生成的构建中。您也可以在运行容器时设置环境变量,在这种情况下是在nginx服务器启动时。
dvtswwa32#
这对我很有效。env文件名-〉.e
运行节点_ENV=qa npm运行构建