目标:
1. 使用dockerfile部署一个 nodejs restful api 项目
准备:
由于时间关系 ,我已经写好项目代码了 , 我们直接去下载吧 一个restful api 项目 ,
1. 从仓库克隆代码 ,复制到今天的教程目录吧 ,
2. server 重名为 server_dockerfile
操作流程:
# 进入工作目录
cd ./server_dockerfile
# 新建一个 dockerfile文件 (一定要用 dockerfile 这个文件名!)
dockerfile 文件内容
# 指定镜像
FROM node
# 在镜像容器中 创建 一个 目录
RUN mkdir -p /home/server
# 把新建的目录指定为工作目录
WORKDIR /home/server
# 复制本机内容到 容器内部的 工作目中 , " . " 是指 dockerfile 文件 相对的当前目录下的所有文件 , 当然你也可以 指定目录
COPY . /home/server
# 指定下载依赖淘宝镜像 , 学过前端都懂吧~
RUN npm config set registry https://registry.npm.taobao.org
# 习惯了使用cnpm ~~
RUN npm i cnpm -g
# 安装依赖
RUN cnpm i
# 对本机暴露一个 3000端口 , 我的代码是写死了 启用3000 端口的 , 所以这里要使用3000
EXPOSE 3000
# 在镜像运行时候 , 执行安装依赖以及启动命令
CMD cnpm i&& npm run dev
指令解释:
FROM #指定要使用的镜像
RUN #镜像构建时候执行
CMD #镜像运行时候执行
WORKDIR #指定工作目录
COPY #用于 拷贝本机代码到容器内部
EXPOSE #对宿主机暴露某个端口
构建自定义镜像 mynodejsproject , 注意这里镜像名称只能全部是小写 , 不能使用驼峰和其他符号
docker build -t mynodejsproject .
那个 " . " 别漏了 , 是指当前目录下面的 dockerfile 文件 , docker 会读取dockerfile 里面内容, 打包一个新的镜像 ,由于涉及到 拉取 node 镜像 和下载项目 依赖 , 时间会较长 , 如果出现失败情况
请使用 镜像删除指令 , 重新构建
# 查看镜像打包结果
docker images
# 启动
docker run --rm -d --name my-test-node -p 8070:3000 mynodejsproject
# 查看启动结果
docker ps
结语:
使用ip+8070端口 尝试访问 127.0.0.1:8070/api/user/find , 看到返回数据代表部署成功!