3.6 使用绑定挂载
在上一章中,我们讨论并使用命名卷来持久化数据库中的数据。如果我们只想存储数据,命名卷就很棒,因为我们不必担心数据存储在哪里。
使用绑定挂载,我们可以控制主机上的确切挂载点。我们可以使用它来持久化数据,但它通常用于向容器提供额外的数据。在应用程序上工作时,我们可以使用绑定挂载将我们的源代码挂载到容器中,让它看到代码更改、响应,并让我们立即看到更改。
对于基于node的应用程序,nodemon是监视文件更改然后重新启动应用程序的好工具。大多数其他语言和框架都有等效的工具。
快速卷类型比较
绑定挂载和命名卷是 Docker 引擎附带的两种主要类型的卷。但是,可以使用其他卷驱动程序来支持其他用例(SFTP、Ceph、NetApp、S3等)。
命名卷 | 绑定挂载 | |
---|---|---|
主机位置 | Docker选择 | 你控制 |
安装示例(使用-v ) |
my-volume:/usr/local/data | /path/to/data:/usr/local/data |
使用容器内容填充新卷 | 是 | 否 |
支持卷驱动 | 是 | 否 |
启动开发模式容器
要运行我们的容器以支持开发工作流程,我们将执行以下操作:
- 将我们的源代码挂载到容器中
- 安装所有依赖项,包括“dev”依赖项
- 启动 nodemon 以监视文件系统更改
所以,让我们开始吧!
-
确保您没有任何以前的
getting-started
容器正在运行。 -
从 app 目录运行以下命令。之后我们会解释发生了什么。
如果您使用的是 x86-64 Mac 或 Linux 设备,请使用以下命令。
$ docker run -dp 3000:3000 \ -w /app -v "$(pwd):/app" \ node:latest \ sh -c "yarn config set registry https://registry.npm.taobao.org/ && yarn install && yarn run dev"
如果您使用的是 Windows,请在 PowerShell 中使用以下命令。
PS> docker run -dp 3000:3000 ` -w /app -v "$(pwd):/app" ` node:latest ` sh -c "yarn config set registry https://registry.npm.taobao.org/ && yarn install && yarn run dev"
如果您使用的是 Apple silicon Mac 或其他 ARM64 设备,请使用以下命令。
$ docker run -dp 3000:3000 \ -w /app -v "$(pwd):/app" \ node:latest \ sh -c "apk add --no-cache python2 g++ make && yarn config set registry https://registry.npm.taobao.org/ && yarn install && yarn run dev"
-dp 3000:3000
- 和之前一样。以分离(后台)模式运行并创建端口映射-w /app
- 设置“工作目录”或命令将从中运行的当前目录-v "$(pwd):/app"
- 将当前目录从主机绑定挂载到/app
容器中的目录node:latest
- 要使用的镜像。请注意,这是来自 Dockerfile 的应用程序的基础镜像sh -c "yarn install && yarn run dev"
- 命令。我们正在使用sh
(alpine 没有bash
)启动一个 shell 并运行yarn install
以安装所有依赖项,然后运行yarn run dev
. 如果我们查看package.json
,我们会看到dev
脚本正在启动nodemon
。
-
您可以使用查看日志
docker logs
。当你看到这个时,你就会知道你已经准备好了:$ docker logs -f <container-id> nodemon src/index.js [nodemon] 1.19.2 [nodemon] to restart at any time, enter `rs` [nodemon] watching dir(s): *.* [nodemon] starting `node src/index.js` Using sqlite database at /etc/todos/todo.db Listening on port 3000
Ctrl
查看完日志后,按+退出C
。 -
现在,让我们对应用程序进行更改。在
src/static/js/app.js
文件中,让我们将“添加项目”按钮更改为简单地说“添加”。此更改将在第 109 行:- {submitting ? 'Adding...' : 'Add Item'} + {submitting ? 'Adding...' : 'Add'}
-
只需刷新页面(或打开它),您应该几乎立即在浏览器中看到更改。Node 服务器重启可能需要几秒钟,因此如果出现错误,请在几秒钟后尝试刷新。
-
随意进行您想要进行的任何其他更改。完成后,停止容器并使用以下命令构建新镜像:
$ docker build -t getting-started .
使用绑定挂载非常普遍。优点是开发机器不需要安装所有构建工具和环境。只需一个docker run
命令,开发环境就可以启动并准备就绪。我们将在未来的步骤中讨论 Docker Compose,因为这将有助于简化我们的命令(我们已经获得了很多标志)。
个人写的小程序,有需求的可以看看:
头像易 : 定制专属个性头像,目前有万圣节、世界杯主题,后续会增加更多主题
源码地址:https://gitee.com/eyes-star/txy-openmp.git