把我的网站部署到容器中---解决了我每次迁移网站的痛点
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
2.1三容器思想
mysql 和 redis各位一个容器,在k8s集群中最好这样做,但是我用的docker,所以使用了第二种方法,见下文。
2.2单容器思想
也就是定制一个Centos镜像,满足所有依赖环境。后边采用此种思想实现。后边发现所有东西集合在一个容器里行成的镜像太大,3个多G。。。。But,money!将就用吧先。。。。
3.容器制作—环境准备
-
安装docker
-
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
-
安装python3
yum install python3 -y
-
安装uwsgi
直接pip3安装会报缺少依赖错误,先安装依赖
yum install gcc yum install python3-devel.x86_64
此时,pip3安装成功
pip3 install uwsgi
-
安装nginx
# 先安装依赖epel-release 不然会报:No package nginx available yum install epel-release # 此时安装nginx yum install nginx
-
安装宝塔面板
# 安装宝塔 中间按提示输入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
-
安装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
你可能需要:
整理成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)
以上是关于把我的网站部署到容器中---解决了我每次迁移网站的痛点的主要内容,如果未能解决你的问题,请参考以下文章