为了账号安全,请及时绑定邮箱和手机立即绑定

[赵仝.com] Docker+Nginx构建前端发布环境一

标签:
Docker

记得元旦的时候,曾经写过说今年要做几个自己的小项目。过去半个月了,抽时间总算弄了一部分,特在此分享。
首先按照计划,我要完成www.赵仝.com(个人主页) 和blog.赵仝.com (个人博客)两个web端的网站。首先硬件准备已经完成。


  • 一台阿里云的ESC服务器

  • 赵仝.com 域名备案完成(只有在工信部备案的阿里云才会允许你将服务部署于80端口)这个大四就弄了。

  • www.赵仝.com 和blog.赵仝.com 的https 证书申请完毕。


准备好了硬件,那就来说一下我们第一部做什么。第一步当然是先搞个静态网页出来,把前端环境准备好。想法如下:
首先我们使用容器来部署项目,其次前端使用Nginx作静态服务器,实现全站https ,将80端口的请求统一转向443端口。目前我们将个人主页和个人博客两个的环境都部署在一个容器里,后续将分开。


实现步骤:开发环境构建基于nginx的Docker镜像,镜像构建完成之后将镜像上传于DockerHub,在阿里云服务器上拉取镜像,目前跑一个容器。


开发环境:步骤如下

  • 我的开发环境ubuntu18.10 安装Docker CE(社区版)安装教程

    webp

    2019-01-27 22-52-58 的屏幕截图.png


  • 编写基于上游nginx的Dockerfile,Nginx 官方Docker镜像网址,我的建议看了它的教程,最好去看以下在github上维护的nginx默认配置,因为虽然我们基于Nginx构建Docker镜像,但我们要使用自己的配置。

  • 阿里云Nginx ssl配置教程

  • 基于VSCode 来搞一个我们本地的Docker工程。我的工程目录如下:


    webp

    2019-01-27 23-03-36 的屏幕截图.png

首先我们说明以下,Dockerfile 当然是我们的镜像基本配置文件。nginx.conf 是我们用来覆盖Nginx镜像默认的配置的,然后zhaotong_web 文件夹就是我们的静态文件,目前里面就放了两个的测试网页和我们赵仝.com 和blog.赵仝.com 的证书。

  • 编写Dockerfile ,内容如下:

# 基于上游Nginx 构建镜像FROM  nginx 
# 作者MAINTAINER  zhaotong <1427730623@qq.com># 标签LABEL "author"="zhaotong"  "description"="zhaotong_web"# 向外暴露端口#http 协议浏览器默认监听端口80EXPOSE 80    #https 协议浏览器默认监听端口443EXPOSE 443# 覆盖nginx官方镜像默认配置文件COPY   nginx.conf  /etc/nginx/nginx.conf# 添加当前项目到镜像,COPY 指令拷贝文件夹,只拷贝文件夹内容COPY   zhaotong_web  /usr/share/nginx
  • 编写我们的nginx.conf文件。内容如下:

user  root; 
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;    #tcp_nopush     on;

    keepalive_timeout  65;    #gzip  on;

    # 将www.赵仝.com 和blog.赵仝.com 的http 请求全部重定向到443端口,实现全站https
    server {
        listen   80;
        server_name  *.xn--gnqw93m.com ; 
        rewrite  ^(.*)$  https://$host$1 permanent;
    }    # 监听443端口   
    server {
        listen 443;        # 监听www.赵仝.com 的请求

        server_name www.xn--gnqw93m.com;
        ssl on;        # 换成对应的证书
        ssl_certificate    /etc/nginx/cert/1754897_www.xn--gnqw93m.com.pem;
        ssl_certificate_key  /etc/nginx/cert/1754897_www.xn--gnqw93m.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
        root   /usr/share/nginx/zt_web;
        index  index_zhaotong.html;
          }
    }    # 监听443端口   
    server {
        listen 443;        # 监听blog.赵仝.com 的请求
        server_name blog.xn--gnqw93m.com;
        ssl on;        # 换成对应的证书
        ssl_certificate   /etc/nginx/cert/1571998_blog.xn--gnqw93m.com.pem;
        ssl_certificate_key  /etc/nginx/cert/1571998_blog.xn--gnqw93m.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
        root   /usr/share/nginx/zt_web;
        index  index_blog.html;
        }
    }

}
  • 生成docker镜像。记住最后哪一个点(具体原因有时间说明)

sudo docker build -t ztweb-nginx-https:0.0.4  .

  • 生成成功后,查看镜像

sudo docker image ls

webp

2019-01-30 17-45-53 的屏幕截图.png

注:docker的命令参数不用记住,docker help build  自然知道build的参数了。


生成本地镜像之后,接下来我们就要将镜像push到DockerHub 上了,前提你首先需要注册,并创建自己的镜像仓库。地址

sudo docker login


webp

2019-01-27 23-23-30 的屏幕截图.png

登陆成功之后我们还需要两个步骤。

  • 将我们原先的镜像Tag 修改成合乎Docker push规范的。目前规范是,用户名/镜像,命令如下

sudo docker tag ztweb-nginx-https:0.0.1 zhaotong19941007/ztweb-nginx-https:0.0.1
修改成功之后如下图所示:

webp

2019-01-30 22-42-54 的屏幕截图.png

  • 接着上传我们的zhaotong19941007/ztweb-nginx-https:0.0.1 镜像到DockerHub


    webp

    2019-01-30 22-27-52 的屏幕截图.png


我们可以在DockerHub中查看到我们的镜像。


webp

2019-01-30 22-36-50 的屏幕截图.png


登陆我们阿里云服务器环境,拉取Docker 镜像。并运行。

docker login

docker pull zhaotong19941007/ztweb-nginx-https:0.0.1

docker run --name nginx -d -p 80:80 -p 443:443 zhaotong19941007/ztweb-nginx-https:0.0.4

webp

2019-01-30 22-38-03 的屏幕截图.png

接着我们浏览器输入www.赵仝.com 和blog.赵仝.com 查看。我们的第一步算是完成了,再接再厉。


webp

2019-01-30 22-38-25 的屏幕截图.png

webp

2019-01-30 22-38-15 的屏幕截图.png



作者:赵仝
链接:https://www.jianshu.com/p/bca65f615f85


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消