我正在使用create-react-app为我的项目使用docker作为我的开发环境。
现在我想知道将项目部署到AWS的最佳实践(我将部署docker)。
也许我的问题是假的,但我真的坚持了。
我的docker文件有一个命令纱线启动...对于开发它就足够我不需要构建任何东西,我的包将在内存中运行,但对于QA或PROD我想使用npm运行构建但是据我所知,它将创建一个新文件夹,其中包含应该在prod env上使用的文件。
那就是说,我的问题是:这种情况的最佳做法是什么?
感谢。
答案 0 :(得分:2)
这就是我所做的:
npm run build
构建所有静态文件。_/nginx
图像自定义提供这些静态文件的HTTP服务器。 (Dockerfile)一次性事情:
但是,如果您的网站是一个简单的静态网站,我建议使用Github pages:它是免费且简单的。我的解决方案适用于多个静态+动态应用程序,这些应用程序可能涉及其他服务(例如Redis,ElasticSearch)以及每日/每小时所需的部署。
答案 1 :(得分:2)
您必须运行npm run build
,然后将生成的文件复制到容器中。您可以使用单独的Dockerfile.build
来构建文件,提取它们并将它们添加到最终容器中。您的最终容器应该能够提供文件。您可以将其基于nginx或其他服务器。您也可以将其用作data volume container in your existing server container。
最新版本的Docker允许您组合两个Dockerfiles,从而使此过程更容易。您可以拥有一个构建容器,然后在同一个文件中定义最终容器。
以下是您的用例的简单示例:
FROM node:onbuild AS builder
RUN npm run build
FROM nginx:latest
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
您可能希望包含自己的nginx配置文件。
有关多阶段构建的更多信息:
https://docs.docker.com/engine/userguide/eng-image/multistage-build/