美文网首页k8s程序员
从最简单的Dockerfile开始!Dockerfile计划第二

从最简单的Dockerfile开始!Dockerfile计划第二

作者: 糖醋沼跃鱼 | 来源:发表于2020-11-25 20:09 被阅读0次

    dockerfile是什么?我们用dockerfile做什么?带着问题看内容嘛,因为我也是在学习

    Sample Dockerfile

    编写Dockerfile是将应用容器化的第一步,你可以这么认为,Dockerfile中的命令就好像是教你一步一步做菜的菜谱去告知docker如何构建我们的镜像。

    # Use the official image as a parent image.
    FROM node:current-slim
    
    # Set the working directory.
    WORKDIR /usr/src/app
    
    # Copy the file from your host to your current location.
    COPY package.json .
    
    # Run the command inside your image filesystem.
    RUN npm install
    
    # Add metadata to the image to describe which port the container is listening on at runtime.
    EXPOSE 8080
    
    # Run the specified command within the container.
    CMD [ "npm", "start" ]
    
    # Copy the rest of your app's source code from your host to your image filesystem.
    COPY . .
    

    我们先从docker官网给的例子一步一步看吧

    1. 从FROM开始,后面的node:current-slim是一个由node.js供应商构建的官方镜像,并且经过docker验证通过,包含node.js长期维护的解释器和相关的依赖。
    2. 使用WORKDIR指定了后续所有的操作都会在镜像文件的文件系统目录/usr/src/app目录中执行(不是我们自己主机上的文件系统)。
    3. COPY会将package.json文件复制到镜像的当前目录中去(学过linux的同学都知道 . 是哪里)。这里额外说明一下,这个package.json文件会复制到我们的WORKDIR中也就是会在镜像里的这个位置/usr/src/app/package.json。再次提醒COPY是从复制主机文件到镜像的内部
    4. RUN指令就是在镜像中执行命令用的,即在镜像中执行npm install,它将会读取package.json确定依赖,并且安装。
    5. 最后一个COPY,会复制你的应用(服务)的剩余源代码从你的主机到你镜像的文件系统。这里我的理解就是(项目连锅端进镜像里,依赖在镜像里单独装)

    到这里,这些步骤和在主机上设置环境,和安装应用的步骤机会是相同的,就是一步一步来。使用Dockerfile的好处就是,捕获了这些配置的动作,让我们的服务或者应用能够更好更方便的迁移。上面的步骤已经构建好了项目文件系统。但是Dockerfile中还有其他几行接着看吧

    • CMD指令指定了一些元数据,描述了如何基于该镜像运行容器(这里不看操作真的不懂),该镜像支持npm start的容器化过程。
    • EXPOSE 8080通知Docker该容器在运行时正在监听8080端口。

    我们上面看到的例子就是一种很好的构建Dockerfile的方法。始终以FROM开头,然后按照步骤构建我们的私有文件系统,并且以添加元数据规范作为结束。Dockerfile指令还有很多,请参考
    Dockerfile reference

    下次更新如何部署Django项目

    因为我自己刚工作,只能晚上回家自己慢慢测了,所以下期可能更的比较慢。但我会一步一步解释所有的操作的。

    相关文章

      网友评论

        本文标题:从最简单的Dockerfile开始!Dockerfile计划第二

        本文链接:https://www.haomeiwen.com/subject/fcuziktx.html