3.6 Docker最新入门教程-Docker入门-使用绑定挂载

3.6 使用绑定挂载

在上一章中,我们讨论并使用命名卷来持久化数据库中的数据。如果我们只想存储数据,命名卷就很棒,因为我们不必担心数据存储在哪里。

使用绑定挂载,我们可以控制主机上的确切挂载点。我们可以使用它来持久化数据,但它通常用于向容器提供额外的数据。在应用程序上工作时,我们可以使用绑定挂载将我们的源代码挂载到容器中,让它看到代码更改、响应,并让我们立即看到更改。

对于基于node的应用程序,nodemon是监视文件更改然后重新启动应用程序的好工具。大多数其他语言和框架都有等效的工具。

快速卷类型比较

绑定挂载和命名卷是 Docker 引擎附带的两种主要类型的卷。但是,可以使用其他卷驱动程序来支持其他用例(SFTPCephNetAppS3等)。

命名卷 绑定挂载
主机位置 Docker选择 你控制
安装示例(使用-v my-volume:/usr/local/data /path/to/data:/usr/local/data
使用容器内容填充新卷
支持卷驱动

启动开发模式容器

要运行我们的容器以支持开发工作流程,我们将执行以下操作:

  • 将我们的源代码挂载到容器中
  • 安装所有依赖项,包括“dev”依赖项
  • 启动 nodemon 以监视文件系统更改

所以,让我们开始吧!

  1. 确保您没有任何以前的getting-started容器正在运行。

  2. 从 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
  3. 您可以使用查看日志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

  4. 现在,让我们对应用程序进行更改。在src/static/js/app.js文件中,让我们将“添加项目”按钮更改为简单地说“添加”。此更改将在第 109 行:

     -                         {submitting ? 'Adding...' : 'Add Item'}
     +                         {submitting ? 'Adding...' : 'Add'}
    
  5. 只需刷新页面(或打开它),您应该几乎立即在浏览器中看到更改。Node 服务器重启可能需要几秒钟,因此如果出现错误,请在几秒钟后尝试刷新。

    添加按钮的更新标签的屏幕截图

  6. 随意进行您想要进行的任何其他更改。完成后,停止容器并使用以下命令构建新镜像:

     $ docker build -t getting-started .
    

使用绑定挂载非常普遍。优点是开发机器不需要安装所有构建工具和环境。只需一个docker run命令,开发环境就可以启动并准备就绪。我们将在未来的步骤中讨论 Docker Compose,因为这将有助于简化我们的命令(我们已经获得了很多标志)。




个人写的小程序,有需求的可以看看:

头像易 : 定制专属个性头像,目前有万圣节、世界杯主题,后续会增加更多主题
源码地址https://gitee.com/eyes-star/txy-openmp.git

posted @ 2022-11-29 09:32  eyes-star  阅读(69)  评论(0编辑  收藏  举报