我想知道是否有人有使用docker的create-react-app的经验。我可以用一个Docker文件来设置它,比如:
from node
RUN mkdir /src
WORKDIR /src
ADD package.json /src/package.json
RUN npm install
EXPOSE 3000
CMD [ "npm", "start" ]
然后使用一个docker-compose文件,如下所示:
app:
volumes:
- "./app:/src"
ports:
- "3000:3000"
- "35729:35729"
build: ./app
这允许我启动容器并查看应用程序,但是livereload在挂载卷中保存文件时不起作用,webpack在src目录中创建了几个.json.gzip文件。
有什么建议让它正常工作吗?
7条答案
按热度按时间apeeds0o1#
是的,正如aholbreich提到的,我会在我的机器上本地使用
npm install
/npm start
来进行开发,只是因为它太简单了。使用docker-compose
、挂载卷等也是可能的,但我认为设置起来可能有点麻烦。对于部署,你可以很容易地使用一个Dockerfile。下面是我使用的一个Dockerfile示例:
您需要将
start:prod
选项添加到您的 package.json 中:您可以使用以下命令在配置项服务上运行测试:
没有什么可以阻止您在本地运行这个Docker容器,以确保一切按预期运行。
xpcnnkqh2#
我最近做了一个叫hello-docker-react的小项目,它只是做了op想要做的事情。
它由docker-compose、create-react-app、yarn、一个节点图像和一个小的入口点脚本组成。
活重载工作完美,我还没有发现任何问题。
https://github.com/lopezator/hello-docker-react
x6h2sr283#
下面是有关https://mherman.org/blog/dockerizing-a-react-app/很好的指南
促进发展
用于生产
iugsix8n4#
这并不是对作者代码的直接改进,但我能够用很少的代码获得一个开发环境--并且不直接依赖于我机器上的节点--如下所示:
停靠-编写.yml
这样,您就可以避免从
Dockerfile
创建Docker映像。用法一般是这样的:
docker compose run node npm install
docker compose up
docker compose run node npm install [package name]
compose run
创建的docker示例:docker compose rm
rqdpfwrv5#
在create-react-app中使用docker的时候,我发现可以通过在你的.env文件中添加
CHOKIDAR_USEPOLLING=1
来覆盖webpackDevServer的配置。这将使文件监视再次工作。它什至刷新主机上的浏览器页面!我唯一发现的是它不会自动打开网页。我还可以建议将
tty: true
添加到服务中,以便将原来的控制台输出返回到终端中。要删除日志中的容器名称前缀,可以在运行docker-compose up -d
之后运行如下命令:xa9qqrwz6#
运行CRA 4.0和许多依赖项
.停靠忽略
Dockerfile.dev
docker-compose.dev.yml
Dockerfile.prod
docker-compose.prod.yml
nginx.conf
要运行
或
dwbf0jvd7#
下面是一个简单的(纯Docker)解决方案,无需本地安装运行时(例如节点):
docker-compose.yml:
在浏览器中打开localhost:3000。热重新加载应该开箱即用。