使用绑定安装

预计阅读时间:5分钟

在上一章中,我们讨论了并使用命名卷将数据持久保存在数据库中。命名卷是巨大的,如果我们只是想存储数据,因为我们不必操心,其中数据存储。

使用bind mounts,我们可以控制主机上的确切安装点。我们可以使用它来持久化数据,但通常用于向容器中提供其他数据。在处理应用程序时,我们可以使用绑定挂载将源代码挂载到容器中,以使其查看代码更改,做出响应并立即查看更改。

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

快速的体积类型比较

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

  命名卷 绑定坐骑
主机位置 Docker选择 你控制
安装示例(使用-v 我的卷:/ usr / local / data /路径/到/数据:/ usr / local / data
用容器内容填充新卷 是的
支持音量驱动器 是的

启动开发模式容器

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

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

所以,让我们开始吧!

  1. 确保您之前没有getting-started运行任何容器。

  2. 运行以下命令。接下来,我们将说明发生了什么:

     docker run -dp 3000:3000 \
         -w /app -v "$(pwd):/app" \
         node:12-alpine \
         sh -c "yarn install && yarn run dev"
    

    如果您使用的是PowerShell,则使用以下命令:

     docker run -dp 3000:3000 `
         -w /app -v "$(pwd):/app" `
         node:12-alpine `
         sh -c "yarn install && yarn run dev"
    
    • -dp 3000:3000- 和之前一样。在分离(后台)模式下运行并创建端口映射
    • -w /app -设置命令将运行的“工作目录”或当前目录
    • -v "$(pwd):/app"-从容器中的主机将当前目录绑定安装到/app目录中
    • node:12-alpine-要使用的图像。请注意,这是来自Dockerfile的应用程序的基本映像
    • sh -c "yarn install && yarn run dev"- 命令。我们正在使用sh(没有alpine bash)启动shell并运行yarn install以安装所有依赖项,然后运行yarn run dev。如果查看package.json,我们将看到dev脚本正在启动nodemon
  3. 您可以使用查看日志docker logs -f <container-id>。当您看到以下内容时,您将知道您已准备好出发:

     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. 只需刷新页面(或打开页面),您几乎应该立即在浏览器中看到所做的更改。重新启动节点服务器可能需要花费几秒钟的时间,因此,如果出现错误,请尝试在几秒钟后刷新。

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

  6. 随时进行您想进行的其他任何更改。完成后,停止容器并使用来构建新映像docker build -t getting-started .

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

回顾

在这一点上,我们可以保留我们的数据库,并快速响应我们的投资者和创始人的需求。万岁!但猜猜怎么了?我们收到了好消息!

您的项目已被选定用于将来的开发!

为了准备生产,我们需要将数据库从在SQLite中工作迁移到可以更好地扩展的东西。为简单起见,我们将保留一个关系数据库,并将我们的应用程序切换为使用MySQL。但是,我们应该如何运行MySQL?我们如何允许容器彼此对话?接下来我们再说!

入门设置方向快速启动简介概念容器码头