利用docker部署nginx-proxy实现ssl证书

前言:学习这个部署的过程中遇到了很多坑,“坑”主要是因为这些东西都没有学过,需要涉及到很多的方面的知识,下面我会涉及到一些。大家知道的就看看,不知道的就去了解一下。其实我也没有太多的去了解,只知道皮毛中的皮毛。这些坑我是一个一个的踩过去的,其中绝大部分坑都是有大神帮我填的。但是最后好歹也是能都跑出来了一个简单的helloworld。关于进一步的怎样把咱们的项目都部署成功目前还在研究中。我写这个主要是怕以后再写好多东西就记不得那么全了,所以赶紧写出来。给大伙介绍我是怎么踩坑的。

具体步骤:

(一).写一个HTML,里面就一句helloworld

(二).把这个东西打包成docker image

(三).使用打包的docker image启动一个container

   (四)  . 用浏览器访问container,应该可以看到之前在html页面的helloworld

(五).用Nginx-proxy代理对container的访问

(六).加https

实现步骤

(一)写一个HTML,里面就一句helloworld

新建一个index.html这个都会就不多说了

(二,三,四)把这个东西打包成docker image

  1.安装docker

(1)标题是用docker部署的当然得用docker,所以得了解docker,安装docker客户端,版本号是17.06的,务必是高版本的(这里有个大坑我先不说)。

(2)学习一下docker基本命令,例如docker ps 、docker ps -a 、docker logs 、docker images 。网上有资源

2.创建镜像创建container

因为我之前峰哥没有给我脚本,我是按我自己的脚本练的。然后我就在网上找了一个教程开始学习。(这是第一个坑,我应该拉取的是nignx:latest基础镜像,不然怎么操作都不会成功)

分享链接http://www.cnblogs.com/liusc/p/docker_node.html

$sudo docker pull node:latest

了解的内容有:

(1).多级目录的创建并切换到该目录下,mkdir –p node/website&&cd node/website

(2).创建文件package.jsontouch package.json

(3).编辑文件vim package.json

(4).构建imagesudo docker build –t name

   (5)   .查看imagedocker images

(6).运行imagedocker run –d--name containerName –p port1:port2 imageName

-d:表示容器在后天运行

--name:容器名称

-p表示端口映射。把本机的port1端口映射到容器的port2端口。这样外网就能通过本机的port1端口访问到我们的web了

imageName :表示这个image代表的REPOSITORY

如果(6)部署成功就可以curl了。Curl http://www.parkhome.wang就可以访问到helloworld .当然没那么简单其实是要在本地配置一些东西的(这是第二个坑),要在本地的/etc文件夹里面的hosts添加127.0.0.1www.parkhome.wang才能成功,我是Mac的,window系统的hosts位于c:\Windows\System\drivers\etc\hosts。因为我用的是Mac,且/etc文件里的东西是不可以改的,用vim hosts可以修改但是就是保存不了,折腾了好长时间才解决要加sudo才能保存能够。这时候就要了解linux系统的一些权限设置。分享链接:http://www.cnblogs.com/123-/p/4189072.html,

这就差不多curl成功了。

(五).用Nginx-proxy代理对container的访问

   部署Nginx-proxy(做这一步就是一个坑,因为我没意识到之前镜像不是Nginx的镜像,所以会影响到下一步成功,)

分享链接:https://github.com/jwilder/nginx-proxy

(1).看英文文档,还好有Google翻译。

(2).跑命令

docker run –d –p 80:80 –v /ver/run/docker.sock:/tmp/docker.sock:ro jwildwer/nginx-proxy

-v挂载目录,而为什么要/ver/run/docker.sock这个可以参考:

http://www.cnblogs.com/fundebug/p/6723464.html

(3)然后再跑docker run –e VIRTUAL_HOST =www.parkhome.wang

-d containterName

containterName:表示在步骤二里创建的容器。

然后再curl http://www.parkhome.wang也能够跑出来。这中间还是有些小坑的,具体的记不得了。遇到再说吧。

4.部署Nginx-proxy-compose

官方解释:它是一个用于Nginx-proxy的轻量级协同容器,它允许创建/更新让我们自动加密证书。

需要删掉之前的Nginx-proxy,因为只暴露了80端口,加ssl有个特别的端口443,所以还要添加这个端口。所以上面的命令改为

docker run -d --name nginx-proxy -p 80:80 -p 443:443 \

-v/var/run/docker.sock:/tmp/docker.sock:ro \

-v${HOME}/var/data/nginx-proxy/certs:/etc/nginx/certs:ro \

-v/etc/nginx/vhost.d \

-v/usr/share/nginx/html \

jwilder/nginx-proxy

然后创建容器nginx-proxy-compose

docker run -d \

--namenginx-proxy-companion \

-v/var/run/docker.sock:/var/run/docker.sock:ro \

--volumes-fromnginx-proxy \

-v${HOME}/var/data/nginx-proxy/certs:/etc/nginx/certs:rw \

jrcs/letsencrypt-nginx-proxy-companion

虽然容器能够创建成功,但是在docker logs的时候还是报错。这个是因为我在创建Nginx容器的时候拉取的是node镜像不是Nginx,所以一直没发现。之后问峰哥,峰哥直接丢了一个脚本过来前两个都能跑通。在跑Nginx-proxy-compose容器的时候还是不行。

峰哥发的脚本:

(1)跑Nginx容器

docker run -d\

--name myapp \

-eVIRTUAL_HOST=www.parkhome.wang\

-eVIRTUAL_PORT=80 \

-eLETSENCRYPT_HOST=www.parkhome.wang\

-e LETSENCRYPT_EMAIL=no-reply@parkhome.wang\

-p 81:80 \

-v${HOME}/var/data/myapp/data:/usr/share/nginx/html \

nginx

(2)跑nginx-proxy容器

docker run -d\

--name myapp \

-eVIRTUAL_HOST=www.parkhome.wang\

-eVIRTUAL_PORT=80 \

-eLETSENCRYPT_HOST=www.parkhome.wang\

-eLETSENCRYPT_EMAIL=no-reply@parkhome.wang\

-p 81:80 \

-v${HOME}/var/data/myapp/data:/usr/share/nginx/html \

nginx

(3)跑Nginx-proxy-compose容器

docker run -d\

--name myapp \

-eVIRTUAL_HOST=www.parkhome.wang\

-e VIRTUAL_PORT=80\

-eLETSENCRYPT_HOST=www.parkhome.wang\

-eLETSENCRYPT_EMAIL=no-reply@parkhome.wang\

-p 81:80 \

-v${HOME}/var/data/myapp/data:/usr/share/nginx/html \

nginx

为什么不行?因为生成ssl证书是要确保第三方服务也就是其他的电脑能访问到这个域名。而我的域名是在本地设置的第三方怎么可能访问到我的本地服务呢。所以需要云主机。还好公司有一台闲置的云主机。这就需要了解一些服务器的知识了,还需要了解dns域名服务器。这里要搞清楚为什么要用dns服务器,它可以让服务能被本地的和第三方访问到,而本地的hosts也是可以解析的但是不能被第三方访问到。我们的parkhome.wang域名是在阿里云上申请的。因为理解错了一个概念就是dns服务器不需要自己搭。阿里云上就自带有dns服务器。直接将腾讯云上的云主机的ip设置成58.87.101.174   www.parkhome.wang就OK了。

(六)加https

云服务器上部署,需要了解一些云服务器的一些知识。这个自己看文档吧。

咱们的云主机的系统是Ubuntu14.04的.需要安装一些工具docker,git,docker-compose。(这里又有一个坑,docker版本太低导致在最后阶段出现的error。废了大半天才知道是这个原因。我的版本是docker17.06的)

跑上面峰哥给的脚本。肯定都能跑出来。之后测试一下出现这个错误

curl:http://www.parkhome.wang:

是因为服务器有防火墙。要想访问这个端口必须的对这个端口开放。需要在腾讯云主机上开放这个端口。云服务上一般都会有安全组这个功能就是设置防火墙的。需要了解一下安全组。

将81端口开放。再访问就能访问到hellworld了。只要开发端口基本就没什么问题了。最后也还要开发80,443端口。https://www.parkhome.wang基本就能跑出来了。


部署咱们的官网

将咱们的官网部署成HTTPS需要跑通shell脚本

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容