我正在使用Docker创建新的Reactjs应用程序,并且我想创建新实例而不将Node.js安装到主机系统。我看过很多教程,但每次第一步都是将Node.js安装到主机,init应用程序,然后设置Docker。我遇到的问题是官方的Node.je Docker镜像仅设计用于运行应用程序,而不是像分离的容器一样运行,因此我无法使用容器命令行进行初始安装。我将要基于任何Linux发行版创建镜像并自行安装Node.js,但是采用这些方法,我无法利用已准备好的Node.js官方镜像的优势。
是否存在任何选项可以在不将Node.js安装到主机系统的情况下使用Docker来启动React应用程序?
谢谢
编辑:基于od @David Maze的答案我决定使用docker-compose,只需将项目目录安装到容器中,然后将command: ["sleep", "infinity"]
放入docker-compose文件中。因此,我不需要安装Node.js进行托管,并且可以像往常一样在项目文件夹中通过容器命令行管理所有内容。我没有解决任何共享的全局缓存,但是由于不同版本的npms冲突,如果容器中有更多版本的节点,我不确定是否需要它。也许有一天我会尝试将其像卷一样从主机的某个全局位置安装到容器中,但是磁盘空间并不是很大的问题...
最佳答案
您应该能够运行以下内容:
sudo docker run \
--rm \
-it \
-u$(id -u):$(id -g) \
-w/ \
-v"$PWD":/app \
node:10 \
npx create-react-app app
每当您想使用Docker打包版本的Node进行任何操作时,都必须重复执行这一系列Docker选项。
最终,这一系列的事情从容器根目录(
-w/
)开始,并使用create-react-app创建一个app
目录; -v
选项具有主机上当前目录的支持,并且-u
选项用于使文件系统权限对齐。 -it
选项可以回答交互式问题,而--rm
可以使容器在其自身之后进行清理。我怀疑您会发现仅安装Node会容易得多。
关于reactjs - 如何仅使用docker而不是host直接创建react-app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55767371/