服务端渲染生产环境部署

一、运行环境准备

1、安装Docker Toolbox

Docker Toolbox 安装包包含了:

docker 客户端

docker-machine 工具

docker-compose 工具

Kitematic 一个Docker的GUI

我们可以在官网下载并安装

2、创建一台新的Docker Machine

docker-machine create -driver virtualbox dockerhost

dockerhost是数组机名称

3、设置环境变量

为了让本地的 docker 客户端了解需要连接的 docker 目标服务器地址,因此需要设置环境变量

eval “$(docker-machine env dockerhost)"

4、利用docker安装node镜像

docker pull node

5、利用docker安装nginx镜像

docker pull nginx

6、查看数组机(dockerhost)的ip

docker-machine ip dockerhost


二、准备部署代码

1、新建一个文件夹ssr,将打包之后的代码(dist文件夹)放入ssr文件夹中

2、将server.js放入ssr文件夹中,server.js文件内容如下


3、将package.json文件放入ssr文件夹中


4、将ssr压缩成zip格式的,再将ssr.zip从主机中拷入数组机中

docker scp ~/www/ssr.zip dockerhost:/home/docker/ssr.zip

需要注意的是,拷贝路径必须是绝对路径

5、进入数组机中用ls命令可以看到ssr.zip文件,解压ssr.zip

docker-machine ssh dockerhost

ls

unzip ssr.zip


三、自定义pm2镜像

1、进入解压后的文件夹ssr

cd ssr

2、创建并编辑process.yml文件

vi process.yml

process.yml文件内容为:


3、创建并编辑dockerfile文件

vi dockerfile

dockerfile文件内容为:


执行如下命令构建一个镜像

docker build -t ssr/pm2 .

执行完之后就会构建一个名为ssr/pm2的镜像

4、执行如下命令,用ssr/pm2镜像启动一个容器

docker run -d --name testpm2 -p 8080:8080 ssr/pm2


四、自定义Nginx镜像

1、在新的文件夹里创建并编辑dockerfile文件


2、创建并编辑nginx.conf文件


执行下面的命令创建一个Nginx镜像

docker build -t ssr/nginx .

3、使用docker images查看镜像

docker images

4、创建一个Nginx容器并连接之前创建的testpm2容器

docker run -d --name nginx -p 80:8089 --link testpm2:testpm2 ssr/nginx

5、在主机的浏览器地址中输入数字机的ip地址即可访问,如:192.168.99.100


五、小结

1、在浏览器中访问数组机的ip时出现不能访问的情况,应该容器没有启动起来,在上述启动容器的步骤中用的是-d命令,-d表示让容器在后台运行。若想查看容器的具体错误,在启动容器的时候将-d换成-it即可 2、常用docker命令

docker-machine ssh dockerhost //进入数组机

docker-machine start dockerhost //启动数组机

docker-machine scp 源路径 目标路径 //将文件从主机中拷入数组机中,源路径是文件所在主机的位置,目标路径是数组机的路径(dockerhost:/home/docker/**.zip)

docker run -it --name test node//启动一个node容器,名为test

docker build -t test/node .//创建test/node镜像

docker images //查看镜像列表

docker ps //查看正在运行的容器

docker ps -a //查看所有容器

docker start test 启动名为test容器

docker stop test 停止名为test容器

docker rm test //删除名为test容器

docker rm test -f //删除正在运行中的test容器

docker rmi test/node //删除名为test/node的镜像

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 121,268评论 16 134
  • 以下原文转载于(https://docs.docker.com/docker-for-mac/)(想找中文版的最新...
    Veekend阅读 6,720评论 0 17
  • 睡前陪着你的是手机,睡醒了第一反应也是拿起手机,到底是你拥有了手机,还是手机拥有了你,是你操纵着手机,还是手机操纵...
    小勇勇就是我阅读 51评论 0 0
  • 每天都感觉好疲劳,不想动,早上又起晚了,本来要教学妹唱歌的,延误了就直接陪她去做任务。 任务是啥呢,跟英语很大的...
    玥玥Yolanda阅读 69评论 0 0
  • 《初秋》 唐·孟浩然 不觉初秋夜渐长,清风习习重凄凉。 炎炎暑退茅斋静,阶下丛莎有露光。 《山行》 唐·杜牧 远上...
    影途社阅读 66评论 0 0