容器部署基于Django博客系统


目录)

容器化部署基于Django的博客系统

1.规划节点

IP主机名节点
192.168.100.10masterdocker-compose节点

2.基础准备

上传软件包DjangoBlog至master的/root目录下并解压

案例实施

1.基础环境准备
(1)导入软件包

下载并解压软件包:

[root@k8s-master-node1 ~]# ls
anaconda-ks.cfg  chinaskills_cloud_paas_v2.0.2.iso  DjangoBlog.tar.gz
[root@k8s-master-node1 ~]# ll DjangoBlog
总用量 229260
drwxr-xr-x 4 root root       219 110 2022 accounts
drwxr-xr-x 3 root root        60 110 2022 bin
drwxr-xr-x 6 root root       301 110 2022 blog
-rw------- 1 root root 211696640 112 2022 CentOS_7.9.2009.tar
drwxr-xr-x 9 root root       105 110 2022 collectedstatic
drwxr-xr-x 4 root root       190 110 2022 comments
drwxr-xr-x 2 root root       292 110 2022 djangoblog
-rw-r--r-- 1 root root       808 17 2022 manage.py
-rw-r--r-- 1 root root      1090 17 2022 nginx.conf
drwxr-xr-x 4 root root       197 110 2022 oauth
drwxr-xr-x 3 root root       138 110 2022 owntracks
-rw-r--r-- 1 root root  22994617 17 2022 Python-3.6.5.tgz
drwxr-xr-x 2 root root      4096 110 2022 Python-pip
-rw-r--r-- 1 root root       493 17 2022 requirements.txt
drwxr-xr-x 4 root root       191 110 2022 servermanager
-rw-r--r-- 1 root root     32061 112 2022 sqlfile.sql
drwxr-xr-x 9 root root       113 110 2022 templates
drwxr-xr-x 6 root root     16384 110 2022 yum

导入Centos:7.9.2009镜像:

[root@k8s-master-node1 ~]# docker load -i DjangoBlog/CentOS_7.9.2009.tar 
Loaded image: centos:centos7.9.2009
(2)启动Kubernetes集群

查看集群状态

[root@k8s-master-node1 ~]# kubectl cluster-info
Kubernetes control plane is running at https://apiserver.cluster.local:6443
CoreDNS is running at https://apiserver.cluster.local:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
2.容器化部署Memcached
(1)编写Dockerfile

编写yum源配置文件:

[root@k8s-master-node1 DjangoBlog]# cd
[root@k8s-master-node1 ~]# cd DjangoBlog/
[root@k8s-master-node1 DjangoBlog]# vi local.repo
[yum]
name=yum
baseurl=file:///root/yum
gpgcheck=0
enabled=1

编写Dockerfile文件

[root@k8s-master-node1 DjangoBlog]# vi Dockerfile-memcached 
FROM centos:centos7.9.2009
MAINTAINER xxx
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y libevent libevent-devel
RUN yum install -y memcached
EXPOSE 11211
ENTRYPOINT /usr/bin/memcached -u root
(2)构建镜像
[root@k8s-master-node1 DjangoBlog]# docker build -t blog-memcached:v1.0 -f Dockerfile-memcached .
3.容器化部署MariaDB
(1)编写Dockerfile

编写数据库初始化脚本

[root@k8s-master-node1 DjangoBlog]# vi mysql_init.sh
#!/bin/bash
mysql_install_db --user=root       
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'root'
mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root';flush privileges;"
mysql -uroot -proot -e "create database djangoblog;use djangoblog;source /opt/sqlfile.sql;"

编写Dockerfile文件:

[root@k8s-master-node1 DjangoBlog]# vi Dockerfile-mariadb
FROM centos:centos7.9.2009
MAINTAINER CSQ
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
ENV LC_ALL en_US.UTF-8
RUN yum install -y mariadb-server
COPY mysql_init.sh /opt/
COPY sqlfile.sql /opt
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
(2)构建镜像
[root@k8s-master-node1 DjangoBlog]# docker build -t blog-mysql:v1.0 -f Dockerfile-mariadb .
4.容器化部署前端服务
(1)编写Dockerfile
[root@k8s-master-node1 DjangoBlog]# vi Dockerfile-nginx 
FROM centos:centos7.9.2009
MAINTAINER CSQ
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y nginx
ADD nginx.conf /etc/nginx/nginx.conf
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nignx","-g","daemon off;"]
(2)构建镜像
[root@k8s-master-node1 DjangoBlog]# docker build -t blog-nginx:v1.0 -f Dockerfile-nginx .
5.容器化部署博客系统
(1)编写Dockerfile
[root@k8s-master-node1 DjangoBlog]# vi Dockerfile-blog
FROM centos:centos7.9.2009
MAINTAINER CSQ
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum install -y make openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-devel python-devel mysql-devel
COPY Python-3.6.5.tgz /opt
RUN tar -zxvf /opt/Python-3.6.5.tgz
RUN mv   Python-3.6.5 /usr/local
RUN cd /usr/bin/Python-3.6.5/ && ./configure && make && make install
RUN ln -s /usr/local/python3/bin/python3 /usr/bin/python3
RUN ln -s /usr/local/python3/bin/pip3  /usr/bin/pip3
ADD requirements.txt requirements.txt
COPY Python-pip /opt
RUN pip3 install --upgrade pip --no-index --find-links=/opt
RUN pip3 install -r requirements.txt --no-index --find-links=/opt
RUN pip3 install  gunicorn[gevent] --no-index --find-links=/opt
RUN pip3 cache purge
RUN mkdir -p /code/djangoBlog
ADD . /code/djangoBlog
RUN chmod +x /code/djangoBlog/bin/docker_start.sh
ENTRYPOINT ["/code/djangoBlog/bin/docker_start.sh"]

(2)构建镜像
[root@k8s-master-node1 DjangoBlog]# docker build -t blog-service:v1.0 -f Dockerfile-blog .
6.编排docker-compose.yaml
(1)编排docker-compose.yaml
[root@k8s-master-node1 DjangoBlog]# vi docker-compose.yaml
version: '3'
services:
  memcached:
   restart: always
   image: blog-memcached:v1.0
   container_name: blog-memcached
   ports:
    - "11211:11211"
  db:
   restart: always
   image: blog-mysql:v1.0
   container_name: blog-mysql
   environment:
    - MYSQL_DATABASE=djangoblog
    - MYSQL_ROOT_PASSWORD=root
   ports:
    - 3306:3306
   depends_on:
    - memcached
  djangoblog:
   restart: always
   image: blog-service:v1.0
   container_name: blog-service:v1.0
   ports:
    - "8000:8000"
   environment:
    - DJANGO_MYSQL_DATABASE=djangoblog
    - DJANGO_MYSQL_USER=root
    - DJANGO_MYSQL_PASSWORD=root
    - DJANGO_MYSQL_HOST=db
    - DJANGO_MYSQL_PORT=3306
    - DJANGO_MEMCHACED_LOCATION=memcached:11211
   volumes:
    - ./collectedstatic:/code/djangoBlog/collectedstatic
   links:
    - db
    - memcached
   depends_on:
    - db
  nginx:
   restart: always
   image: blog-nginx:v1.0
   container_name: blog-nginx
   ports:
    - "8888:80"
    - "443:443"
   volumes:
    - ./collectedstatic:/code/djangoblog/collectedstatic
   links:
    - djangoblog:dangoblog
(2)部署服务
[root@k8s-master-node1 DjangoBlog]# docker-compose up -d
[+] Running 5/5
 ⠿ Network djangoblog_default  Created                                                                                                                                 0.1s
 ⠿ Container blog-memcached    Started                                                                                                                                 1.5s
 ⠿ Container blog-mysql        Started                                                                                                                                 2.4s
 ⠿ Container blog-service      Started                                                                                                                                 3.6s
 ⠿ Container blog-nginx        Started                                                                                                                                 4.4s

查看服务

[root@k8s-master-node1 DjangoBlog]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
blog-memcached      "/bin/sh -c '/usr/bi…"   memcached           running             0.0.0.0:11211->11211/tcp, :::11211->11211/tcp
blog-mysql          "mysqld_safe --user=…"   db                  running             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
blog-nginx          "nginx -g 'daemon of…"   nginx               running             0.0.0.0:8888->80/tcp, 0.0.0.0:443->443/tcp, :::8888->80/tcp, :::443->443/tcp
blog-service        "/code/djangoBlog/bi…"   djangoblog          running             0.0.0.0:8000->8000/tcp, :::8000->8000/tcp

浏览器访问服务

http://ip:8888 访问服务


版权声明:本文为qq_52089863原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。