Docker使用编写dockerfile启动node.js应用

 更新时间:2019年01月22日 09:49:26   作者:时间被海绵吃了  
这篇文章主要介绍了Docker使用编写dockerfile启动node.js应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

编写 Dockerfile

express 自动创建的目录为例,目录结构如下:

├── /bin
│  └── www
├── /node_modules
├── /public
├── /routes
├── /views
├── package-lock.json
├── package.json
├── ecosystem.config.js
├── app.js
└── Dockerfile

在项目目录下新建 Dockerfile 文件

FROM node:10.15
MAINTAINER sunhengzhe@foxmail.com
COPY . /app/
WORKDIR /app
RUN npm install pm2 -g
EXPOSE 8003
CMD ["pm2-runtime", "ecosystem.config.js"]
  • FROM 指定基础镜像为 node 的 10.15 版本(node 官方版本可在此查看
  • MAINTAINER 说明镜像的维护者
  • COPY 命令将宿主机的文件拷贝到镜像中,格式为 COPY [--chown=<user>:<group>] <源路径>... <目标路径>,这里将项目目录下的所有文件都拷贝到镜像中的 /app 目录下。如果目标路径不存在,docker 将自动创建。
  • WORKDIR 用来指定工作目录,即是 CMD 执行所在的目录。
  • RUN 命令用来执行 shell 命令,这里用来安装 pm2
  • EXPOSE 命令用来 声明 运行时容器提供服务端口,但要注意运行时并不会开启这个端口的服务。这个命令主要是帮助使用者理解这个镜像服务的守护端口,以方便配置映射;另外在使用随机端口映射时,会自动随机映射 EXPOSE 的端口
  • CMD 是默认的容器主进程的启动命令

构建镜像

在项目目录下执行

docker build -t express-app:v1 .

如果构建成功,查看镜像列表

docker images

应该会输出镜像 express-app:v1

运行容器

docker run -d -p 8003:3000 --name="express-app" express-app:v1

docker rundocker createdocker start 两个命令的简写。

  • -d--detach,代表让容器后台运行。
  • -p 指定宿主机和容器的端口映射,左边为宿主机的端口,右边为容器的端口,也就是说访问宿主机的 8003 端口,会映射到容器内的 3000 端口。
  • --name 设置容器别名,如果不指定,docker 会随机生成一个名字,比如 tender_swirles 之类的。

执行

docker ps

正常展示如下

添加 -a 参数可以查看所有已启动容器。

进入容器

如果要进入容器进行操作,执行下面命令

docker exec -it express-app bash

-i-t 一般结合使用,-i 启动交互模式,-t 指定需要分配终端,可以自行尝试不传其中一个的效果。

exec 类似的还有 attach 命令,命令为 docker attach express-app,但从这个 stdin 中 exit,会导致容器的停止,所以推荐使用 exec 命令。

关闭操作

停止容器

docker stop express-app

删除容器

docker rm express-app

如果删除时容器还在运行,需要加上 -f 参数

删除镜像

docker rmi express-app:v1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Docker安装Redis配置远程连接及踩坑

    Docker安装Redis配置远程连接及踩坑

    本文主要介绍了Docker安装Redis配置远程连接及踩坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • docker部署kafka的方法步骤

    docker部署kafka的方法步骤

    本文主要介绍了docker部署kafka的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Docker 给运行中的容器设置端口映射的方法

    Docker 给运行中的容器设置端口映射的方法

    这篇文章主要介绍了Docker 给运行中的容器设置端口映射的方法,详细的介绍了端口映射的概念和方法,具体一定的参考价值,有兴趣的可以了解一下
    2017-11-11
  • Docker搭建Redis Cluster集群的教程详解

    Docker搭建Redis Cluster集群的教程详解

    这篇文章主要为大家详细介绍了Docker搭建Redis Cluster集群的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的可以参考下
    2024-03-03
  • Docker私有仓库的搭建和界面化管理详解

    Docker私有仓库的搭建和界面化管理详解

    这篇文章主要给大家介绍了关于Docker私有仓库的搭建和界面化管理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Docker Compose+Nestjs构建Dapr Redis发布订阅分布式应用

    Docker Compose+Nestjs构建Dapr Redis发布订阅分布式应用

    这篇文章主要为大家介绍了Docker Compose+Nestjs构建Dapr Redis发布订阅分布式应用步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • docker打包node项目的过程讲解

    docker打包node项目的过程讲解

    今天小编就为大家分享一篇关于docker打包node项目的过程讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • docker重新加载nginx配置方式

    docker重新加载nginx配置方式

    这篇文章主要介绍了docker重新加载nginx配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Docker 使用 Supervisor 来管理进程操作

    Docker 使用 Supervisor 来管理进程操作

    这篇文章主要介绍了Docker 使用 Supervisor 来管理进程操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker制作镜像的完整过程

    Docker制作镜像的完整过程

    本文主要介绍了Docker制作镜像的完整过程,以制作CentOS镜像为例,讲述对镜像自定义,打包以及推送的远程仓库的过程,感兴趣的可以了解一下
    2021-11-11

最新评论