美文网首页Docker容器
[赵仝.com] Docker+Nginx构建前端发布环境一

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

作者: 赵仝 | 来源:发表于2019-01-30 22:49 被阅读58次

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


  • 一台阿里云的ESC服务器
  • 赵仝.com 域名备案完成(只有在工信部备案的阿里云才会允许你将服务部署于80端口)这个大四就弄了。
  • www.赵仝.com 和blog.赵仝.com 的https 证书申请完毕。

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


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


开发环境:步骤如下

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

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

  • 阿里云Nginx ssl配置教程

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


    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 协议浏览器默认监听端口80
EXPOSE 80    
#https 协议浏览器默认监听端口443
EXPOSE 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

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

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


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

sudo docker login


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
修改成功之后如下图所示:

2019-01-30 22-42-54 的屏幕截图.png
  • 接着上传我们的zhaotong19941007/ztweb-nginx-https:0.0.1 镜像到DockerHub


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

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


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

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

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


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

相关文章

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

    记得元旦的时候,曾经写过说今年要做几个自己的小项目。过去半个月了,抽时间总算弄了一部分,特在此分享。首先按照计划,...

  • [赵仝.com] Docker下安装mysql

    [赵仝.com] 第一篇文章我们完成的前端的一个发布部署机制。今天来就是安装我们的数据库。这一次我们用docker...

  • webpack

    webpack webpack是一个前端构建工具,前端构建工具就是把开发环境的代码转化成运行环境代码。一般来说,开...

  • 前端项目docker化的过程中遇到的问题

    一个普通的前端项目docker化过程中遇到的几个问题以及解决方法 1. docker+nginx部署前端项目时无法...

  • 关于使用npm,vue-cli搭建vue2.0环境

    最近一段时间vue js非常流行,伴随着vue2.0版本的发布,一套前端基于node环境下的自动化环境构建方法随之...

  • 构建前端开发环境

    开发工具建议使用vscode,里面包含很多插件,功能强大 建议安装vscode插件:tslint,eslint,y...

  • 前端打包环境构建

    前端打包环境搭建 1、安装nvm 2、安装node 3、安装vue 4、安装elementui 5、项目安装 6、...

  • 前端开发环境构建

    最近刚买了新的mbp,白纸一样的宝贝当然需要好好勾画一下了,由于本人从事前端开发相关工作,每次换新电脑都要在网上查...

  • DevOps构建流程

    以下内容为我们当前环境主要的构建发布方式,当然根据不同的环境也会有自己独特的构建发布方式。 1. 源码分支管理规范...

  • Jenkins Gitlab 前端构建发布

    流程:通常是从gitlab/github拉取项目,构建,把产出文件发到服务器。 一、环境 jenkins环境 Gi...

网友评论

    本文标题:[赵仝.com] Docker+Nginx构建前端发布环境一

    本文链接:https://www.haomeiwen.com/subject/fbtojqtx.html