利用DockerHub在Centos7.6环境下部署Nginx反向代理Gunicorn+Flask独立架构

序幕

书接上回,上回说到在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,今天我们来讲一讲利用DockerHub在Centos7.6环境下部署Nginx反向代理Gunicorn+Flask独立架构

准备

  1. 首先你需要有自己的云服务。我推荐白嫖

    https://free.aliyun.com/?spm=5176.14145661.J_3598540520.ace-channel-latest-activity-card.3eb418759BoljH

    阿里云白嫖服务器

    docker

  2. 其次你需要将本地项目push到DockerHub(仓库)

    • 首先激活账号,创建仓库

      docker

      这里的创建仓库与Github类似

    • 填写仓库信息具体为仓库名称、描述以及是否公开或者私有。

      docker

    • 创建成功之后,它就会出现在镜像列表中

      docker

  3. 此时我们需要对本地的镜像重命名,这里重命名为herosir/flask_back。因为要与dockerhub上的仓库对应。如果名称不对应是无法将本地镜像push到线上仓库中。

    docker tag myflask herosir/flask_back
    
  4. 结果

    docker

  5. 之后在命令行输入命令

    docker login
    
  6. 用DockerHub的账号和密码登录

    docker

  7. 登录成功之后,用命令把本地镜像push到DockerHub中

    docker push herosir/flask_back
    
  8. 注意这里的镜像名称必须和hub中的仓库名称一致,否则将会抛出错误。

  9. 上传成功后,就可以在DockerHub中看到它了,此时就能随意pull操作了

    docker

部署

  1. 前置操作已经完毕,此时,登录你的云服务器,这里以阿里云的Centos7.6为例子,进入服务器后安装Docker服务

    #升级yum
    sudo yum update
    #卸载旧版本docker
    sudo yum remove docker  docker-common docker-selinux docker-engine
    #安装依赖
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    #设置源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sudo yum makecache fast
    #安装docker
    sudo yum install docker-ce
    
    #启动服务
    sudo systemctl start docker
    
  2. 安装完成后输入 docker -v

    docker

    返回Docker版本号说明没有问题

  3. 拉取我们之前打包并且上传到hub的Flask镜像

    docker pull herosir/flask_back
    
  4. 下载成功后,会展示在镜像库里

    docker

  5. 运行项目,这里我们可以采用后台守护进程的模式起服务

    sudo docker run -d -p 5000:5000 --name testflask herosir/flask_back
    
  6. 使用docker ps命令可以看到是否运行成功。

    docker

  7. 使用服务器的ip访问一下Flask服务,这里有个小坑,不论是腾讯云、阿里云还是百度云亦或是各种乱七八糟的云,都需要在安全组策略中开放你需要访问的端口,比如这里我用的阿里云。

    • 解决安群组策略

    • 找到服务器的配置规则

      docker

    • 手动添加下图信息

      docker

  8. 设置完成之后通过服务器公网IP进行访问

    docker

    OK,访问没有问题

  9. 接下来,我们同样利用Docker来安装Nginx服务

    docker pull nginx
    
  10. 随后启动Nginx测试一下

    docker run -d -p 80:80 nginx
    
    • 这里也需要设置安群组

      操作同上,内容如下

      docker

  11. 直接访问公网IP

    docker

  12. 现在,我们将运行Nginx容器里的配置文件copy到宿主机里面

    docker cp 容器id:/etc/nginx/conf.d/default.conf /root/default.conf
    

    前面是容器的路径 后面是宿主机的路径

    容器id可以通过docker ps命令查看

  13. 复制出来之后,输入命令修改这个nginx配置

    vim /root/default.conf
    
  14. 将Gunicorn配置加到里面(更改)

    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
    
            proxy_pass http://你的服务器公网IP:5000; # 这里是指向 gunicorn host 的服务地址
    
            proxy_set_header Host $host;
    
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
  15. 修改完配置文件之后,关掉运行的nginx服务容器,并且删掉它

    docker stop 容器id
    docker rm $(docker ps -a -q)
    
  16. 随后再次启动Nginx容器,不过这次和上次不同之处就是需要用到 -v 进行挂载了,挂载简单理解就是将宿主机的文件替换Docker容器内部的文件,达到修改的效果。

    docker run --name mynginx -d -p 80:80 -v /root/default.conf:/etc/nginx/conf.d/default.conf nginx
    

    这里-v参数也遵循冒号左侧为宿主机右侧为容器的原则。

  17. 新启动成功后,访问服务器ip

    docker

    OK,部署完成

结语

部署完成,轻松且愉快

最后Dockerhub地址:[https://hub.docker.com/r/herosir/flask_back](

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值