Skip to main content

在本地开发环境使用 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 做一些操作,最佳的方式是使用单独的容器。

  1. 找到需要的版本号:https://nodejs.org/en/about/previous-releases
  2. 以最后一个 Node 16 版本为例:docker run -it -detach --rm --volume $(pwd):/usr/src/app node:16.20.2-alpine
  3. 根据 step 2 输出的 container id 以可交互终端的形式进入容器内:docker exec -it [container id] sh
  4. 进入 workdir:cd /usr/src/app
  5. Npm 加速:npm config set registry https://registry.npmmirror.com
  6. 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 命令创建容器时会报错。