如何在docker中部署node后端接口服务

1,425 阅读2分钟

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。


我以centos系统环境搭建,欢迎大家评论,本人菜鸟一枚,不喜勿喷,有问题请指出,我切细听

基本思路

  1. 在本地写好node服务项目
  2. 在服务器中安装docker
  3. 拉取一个node镜像
  4. 上传node项目文件
  5. 创建并且编写Dockerfile文件及程序
  6. 构建镜像容器
  7. 启动容器
  8. 本地访问服务器node项目

安装docker

yum install docker -y

设置开机启动docker

systemctl start docker

安装 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

对二进制文件应用可执行权限

sudo chmod +x /usr/local/bin/docker-compose

docker中安装node

docker pull node命令是拉取最新版node镜像或者是指定高一点的版本,其它博客中拉取的是node 0.12.2版本,就我而言这版本太低了有的js写法解析不了会报错

docker pull node

查看是否拉取成功

docker images

image.png

创建文件夹并上传或拉取仓库代码

创建文件夹

mkdir /data/node/appservice             #创建存放代码的文件夹

上传项目

使用FileZilla应用上传项目到路径为/data/node/appservice的appservice文件夹中

创建并且编写Dockerfile文件

进入appservice文件夹中,在appservice当前文件中创建Dockerfile文件

cd /data/node/appservice  #进入appservice文件
touch Dockerfile          #创建文件
echo "
FROM docker.io/node     

RUN mkdir -p /home/appservice        #在镜像容器中创建目录      
WORKDIR /home/appservice             #将此目录设为工作目录

# Bundle app source 
COPY . /home/appservice              #经appservice下的所有文件拷贝到镜像容器中
RUN npm install                      #重新安装依赖                  

EXPOSE 3356  #最好和node服务端口号一致
CMD [ "npm", "start" ]" >Dockerfile  #往Dockerfile文件写入内容                                 

构建镜像容器

在项目的根目录下执行构建镜像容器命令:

docker build -t appservice .

会安装Dockerfile每行程序执行为序列,Dockerfile中的程序跑完查看appservice镜像是否存在

docker images

image.png

启动容器

appservice 是我们给容器起的名字,这个名字是唯一的;-p表示端口映射,即将容器内的3356端口映射到宿主机器的80端口上,这样外部就可以通过80端口来访问容器内部运行的应用了。

docker run -p 3356:3356 appservice

访问该端口

打开浏览器输入服务器公网IP地址加上端口就行例如:http://156.78.58.125:3356 ,如果在Nginx做了反向代理可以直接访问域名即可