在本地开发环境使用 Docker
Volume 将项目代码映射到容器中
注意是 Volume(卷)不是 Volumn(列)
必须先创建卷,开发用的卷建议加 _dev 后缀。
docker volume create my-project_dev
即使重复 执行上面的命令来创建卷也没有问题,不会抛错误,所以非常适合写在自动化脚本上。
使用匿名卷
也可以在 docker run 时使用匿名卷,使用匿名卷不需要提前创建好 volume。
docker run --volume 本地项目路径:容器里面的映射路径
注意本地项目路径必须是绝对路径,不能用 ./ 这些相对路径。
技巧:若在项目根目录执行的命令或脚本时,可以用 $(pwd) 代替项目路径,例如:--volume=$(pwd):/var/www。
参考:https://docs.docker.com/storage/volumes/
快速使用指定 Node 版本
在不影响本地环境的情况下,使用指定版本(例如旧版)的 NodeJS 做一些操作,最佳的方式是使用单独的容器。
- 找到需要的版本号:https://nodejs.org/en/about/previous-releases
- 以最后一个 Node 16 版本为例:
docker run -it -detach --rm --volume $(pwd):/usr/src/app node:16.20.2-alpine - 根据 step 2 输出的 container id 以可交互终端的形式进入容器内:
docker exec -it [container id] sh - 进入 workdir:
cd /usr/src/app - Npm 加速:
npm config set registry https://registry.npmmirror.com - Do something:
npm ci
步骤123的简化版:
- 只精确到大版本号,不查官网。
- 使用 sh 做容器的主进程,跳过 docker exec 步骤。
docker run -it --rm --volume $(pwd):/usr/src/app node:14-alpine sh
关闭 Saver Mode
默认过几分钟没动就会进入 Saver Mode 导致 WSL VS Code 用 Docker 命令创建容器时会报错。