这篇文章主要介绍了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.15MAINTAINER sunhengzhe@foxmailCOPY . /app/WORKDIR /appRUN npm install pm2 -gEXPOSE 8003CMD ["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:v1docker run 是 docker create 和 docker 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以上就是本文的全部内容,希望对大家的学习有所帮助,
- 0
- 0
- 0
- 0
- 0
更多推荐
Docker使用编写dockerfile启动node.js应用
发布评论