把我的网站部署到容器中---解决了我每次迁移网站的痛点

Posted 大聪明Smart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把我的网站部署到容器中---解决了我每次迁移网站的痛点相关的知识,希望对你有一定的参考价值。

文章目录

把我的网站部署到容器中—解决了我每次迁移网站的痛点

1.前言or需求

究极根本还是money不足,导致我经常换各家服务器以参与新用户优惠。首年服务器价格还是很实惠的,但这就需要我不断的迁移网站。因为网站依赖的环境和部署很繁琐,每次迁移都是心力交瘁,痛并难受着!还好,现在我学习了docker和kubernetes这些容器虚拟化技术。这就计划把网站容器化,以保持环境一致性和持久化。下次在进行网站迁移时直接docker pull 我的镜像,然后启动容器即可。妈妈再也不用担心我熬夜写bug啦!

2.框架构思

最好的选择是以k8s的pod形式运行,然后做service暴露,这样达到外部访问的目的。But,money!k8s少说三台2c4g服务器,果断放弃这种方案。

现在就只有docker可以利用了,还好一台服务器可以搞定。

你可能需要

阿里云服务器选购优惠

原创 Docker&K8s—Docker的安装、部署、镜像管理、容器操作、Dockerfile

原创 Docker&K8s—跟我一步步部署K8s(二进制安装部署)

原创 三台ECS使用kubeadm快速部署最新版本K8sv1.21.3

原创 利用阿里云ECS部署自己的私有harbor镜像仓库

2.1三容器思想

mysql 和 redis各位一个容器,在k8s集群中最好这样做,但是我用的docker,所以使用了第二种方法,见下文。

2.2单容器思想

也就是定制一个Centos镜像,满足所有依赖环境。后边采用此种思想实现。后边发现所有东西集合在一个容器里行成的镜像太大,3个多G。。。。But,money!将就用吧先。。。。

3.容器制作—环境准备

  1. 安装docker

    参考我之前的文章:原创 Docker&K8s—Docker的安装、部署、镜像管理、容器操作、Dockerfile

  2. docker镜像

    docker pull centos:centos7
    

    镜像拉去后进入容器:

    # 运行容器 特权 端口映射 后台
    docker run -dti --name bt -p80:80 -p8888:8888 --privileged=true dachongming/django-web:bt /usr/sbin/init
    
    # 进入容器
    docker exec -ti 7c5784e1f1f7 /bin/bash
    # 关闭防火墙
    [root@7c5784e1f1f7 /]# systemctl stop firewalld
    
  3. 安装python3

    yum install python3 -y
    
  4. 安装uwsgi

    直接pip3安装会报缺少依赖错误,先安装依赖

    yum install gcc
    yum install python3-devel.x86_64
    

    此时,pip3安装成功

    pip3 install uwsgi
    
  5. 安装nginx

    # 先安装依赖epel-release 不然会报:No package nginx available
    yum install epel-release
    
    # 此时安装nginx
    yum install nginx
    
  6. 安装宝塔面板

    # 安装宝塔 中间按提示输入yes即可
    [root@7c5784e1f1f7 /]# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
    

    服务器一定先端口放行

    此时浏览器访问:服务器公网IP:8888/1dea6e26

  7. 安装mysql、安装redis

    登陆宝塔后,搜索安装mysql和redis即可

4.做好的容器打包为镜像

持久保存:

docker commit -p CONTAINER ID docker.io/dachongming/alpine:v3.14.0_with_1.txt

docker commit -p 7c5784e1f1f7 docker.io/dachongming/bloglee:v1
docker push docker.io/dachongming/bloglee:v1

推送dockerhub比较慢,可以把镜像推送到我们的私有仓库:

docker commit -p 7c5784e1f1f7 harbor.liboer.top/public/bloglee:v1
docker push harbor.liboer.top/public/bloglee:v1

你可能需要:

阿里云服务器选购优惠

原创 利用阿里云ECS部署自己的私有harbor镜像仓库

整理成DockerFile

FROM dachongming/bloglee:v1

MAINTAINER libo_sober@163.com

COPY BlogLee /app/

WORKDIR /app/BlogLee

RUN source ./bloglee.sql &&\\
    pips install ./requirements.txt &&\\
    uwsgi --ini ./uwsgi.ini
    nginx
    
    
# 最后启动容器
docker run -dti --name bloglee -p80:80 -p8888:8888 -v/mydata/BlogLee:/app/ --privileged=true dachongming/bloglee:v1

后边有些还需要测试,我的服务器太卡啦,运行几个容器就宕机了。。。找时间在虚拟机上测一下吧

附录

查看运行容器
docker ps

查看所有容器
docker ps -a

进入容器
其中字符串为容器ID:

docker exec -it d27bd3008ad9 /bin/bash

停用全部运行中的容器:
docker stop $(docker ps -q)

删除全部容器:
docker rm $(docker ps -aq)

一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)

以上是关于把我的网站部署到容器中---解决了我每次迁移网站的痛点的主要内容,如果未能解决你的问题,请参考以下文章

把我的网站部署到容器中---解决了我每次迁移网站的痛点

网站成功迁移到容器---部署流程和框架图记录

网站成功迁移到容器---部署流程和框架图记录

网站成功迁移到容器---部署流程和框架图记录

Web 部署不再有效

iis 5.1 部署.NET MVC 问题