node app远程部署方案images方法

477 阅读2分钟

服务器设置好了以后,需要部署。部署通个docker有两个方案:

  1. 把代码全部上传到home文件夹,然后进行build成image,后运行docker-compose。
  • 缺点是需要上传,且不能迅速部署,上传很多无用代码
  • 优点是docker-compose命令方便
  1. 代码放在本机,本地docker build单个image,然后push到repo后再远程拉下来,在server运行
  • 缺点是需要运行多个命令
  • 优点是不用上传

考虑到同时build的image不多,因此第二种方法更科学可行。下面详解:

  1. 先下载redis,官方redis,不用build image直接run生成container
docker run -p 6379:6379 --name redis-server -d redis 
  • 测试redis: docker exec -it redis-server sh
  • #redis-cli (运行client)如图

注意:

  • 一定要用-p 6379:6379表示绑定host和container端口,如图所示 0.0.0.0:6379->6379(如果使用compose则不需要这样,显示也不同)。

  • 同时要docker build的时候使用.dockerfile里面的expose命令打开container的端口,如图80/tcp,443/tcp

  • 同理,如果要通过外网访问该container也需要绑定,如localhost:3000,则需要run -p 3000:3000,然后才能通过浏览器访问

  1. node app里面通过,const client = redis.createClient({ host: "192.168.99.100", port: 6379 }); 访问redis-server,注意:192表示是windows上的docker,如果是linxu和其他则是127,或者不需要填写,则默认。

  2. build node app (注意最后点,-t=tage)

docker build -t <username/myapp> . 

得到username/myapp的image

  1. 运行image (注意--name=类似-t)
docker run -p 8360:8360 --name my-app -d <username/myapp>

得到

  1. 测试,浏览器输入 192.168.99.100:8360 (针对windows docker-toolbox)

  2. 切换到docker的terminal,输入 docker login

  1. docker push <username/myapp>

  2. 登录服务器

  1. pull image
-docker login
-docker pull <username/myapp>
-docker images
  1. 重复搭建redis的步骤(1\4步骤即可)

List all containers (only IDs)
-docker ps -aq
Stop all running containers
-docker stop $(docker ps -aq)
Remove all containers
-docker rm $(docker ps -aq)
Remove all images
-docker rmi $(docker images -q)

docker system prune

docker logs <container>

docker exec -it <container> sh

后记: 如果docker push速度比较慢,也可以通过filezilla把文件(除了node_modules)上传到服务器,然后再服务器上执行:

docker build -t <> .

生成的image直接可以运行

docker run......

注意访问需要是内网IP: 如

查询的话这样看: iptables --table nat --list

设置自动重启

 docker run -dit --restart unless-stopped -p 8360:8360 --name kupangzi-server -d frankgo/kupangzi-server

设置多端口

docker run -dit --restart unless-stopped -p 8361:8360 --name kupangzi-server -d frankgo/kupangzi-server