容器化部署基于Django的博客系统 目录
目录)
容器化部署基于Django的博客系统
1.规划节点
| IP | 主机名 | 节点 |
|---|---|---|
| 192.168.100.10 | master | docker-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 1月 10 2022 accounts
drwxr-xr-x 3 root root 60 1月 10 2022 bin
drwxr-xr-x 6 root root 301 1月 10 2022 blog
-rw------- 1 root root 211696640 1月 12 2022 CentOS_7.9.2009.tar
drwxr-xr-x 9 root root 105 1月 10 2022 collectedstatic
drwxr-xr-x 4 root root 190 1月 10 2022 comments
drwxr-xr-x 2 root root 292 1月 10 2022 djangoblog
-rw-r--r-- 1 root root 808 1月 7 2022 manage.py
-rw-r--r-- 1 root root 1090 1月 7 2022 nginx.conf
drwxr-xr-x 4 root root 197 1月 10 2022 oauth
drwxr-xr-x 3 root root 138 1月 10 2022 owntracks
-rw-r--r-- 1 root root 22994617 1月 7 2022 Python-3.6.5.tgz
drwxr-xr-x 2 root root 4096 1月 10 2022 Python-pip
-rw-r--r-- 1 root root 493 1月 7 2022 requirements.txt
drwxr-xr-x 4 root root 191 1月 10 2022 servermanager
-rw-r--r-- 1 root root 32061 1月 12 2022 sqlfile.sql
drwxr-xr-x 9 root root 113 1月 10 2022 templates
drwxr-xr-x 6 root root 16384 1月 10 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版权协议,转载请附上原文出处链接和本声明。