From 9b06ce90ae1e73cc85a1ba1bb5955dad63e6c7be Mon Sep 17 00:00:00 2001 From: diandian Date: Fri, 24 Mar 2023 21:59:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'=E5=AE=B9=E5=99=A8=E4=BA=91'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 容器云/容器云应用.md | 436 +++++++++++++++++++++++++++++++++++ 1 file changed, 436 insertions(+) create mode 100644 容器云/容器云应用.md diff --git a/容器云/容器云应用.md b/容器云/容器云应用.md new file mode 100644 index 0000000..7d0a8b2 --- /dev/null +++ b/容器云/容器云应用.md @@ -0,0 +1,436 @@ +

容器云实战

+ +**作者:行癫(盗版必究)** + +------ + +## 一:环境介绍 + +​ 应用商城Mall重新实现全容器化部署,原应用商城系统各模块功能及系统架构如下: + +| 模块 | 使用技术 | 备注 | +| :---------------: | :------: | :----------------------------------------------------: | +| mall.sql | MySQL | 网站的数据库 | +| dist目录 | Nginx | 网站的前端项目 | +| mall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 | +| mall-user | | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | +| user-provider | 后端服务 | 提供用户相关服务 | +| shopping-provider | | 提供购物车、推荐商品、商品等服务 | + +image-20220811223627960 + +## 二:项目部署 + +#### 1.数据库镜像 + +​ 制作数据库MySQL镜像,镜像名为mall-mysql:v1.1,设置数据库支持UTF-8编码,设定root用户的密码为123456,并设置服务开机自启 + +```shell +[root@xingdian ~]# docker pull mariadb:latest +[root@xingdian ~]# docekr tag mariadb:latest chinaskill:mariadb:v1.1 +``` + +#### 2.redis镜像 + +​ 制作Redis镜像,镜像名为chinaskill-redis:v1.1,使用centos:centos7.9.2009基础镜像,安装Redis服务,设置Redis免密,并关闭保护模式,开放端口6379,并设置服务开机自启 + +```shell +[root@xingdian redis]# ls +Dockerfile redis-4.0.4 redis-4.0.4.tar.gz redis.conf +``` + +​ redis下载地址:https://download.redis.io/releases/redis-4.0.4.tar.gz + +```shell +[root@xingdian redis]# wget https://download.redis.io/releases/redis-4.0.4.tar.gz +``` + +​ 准备redis配置文件 + +```shell +[root@xingdian redis]# git clone https://gitee.com/xingdiancloud/redids-config.git +``` + +​ 编写Dockerfile文件 + +```shell +[root@xingdian redis]# cat Dockerfile +FROM centos:centos7.5.1804 +MAINTAINER Chinaskill +RUN yum -y install gcc make +ADD redis-4.0.4.tar.gz /opt/ +RUN mv /opt/redis-4.0.4 /opt/redis +WORKDIR /opt/redis +RUN make && make install +RUN rm -rf /opt/redis/redis.conf +COPY redis.conf /opt/redis +EXPOSE 6379 +CMD ["redis-server","/opt/redis/redis.conf"] +``` + +​ 构建镜像 + +```shell +[root@xingdian redis]# docker build -t chinaskill-redis:v1.1 . +``` + +#### 3.zookeeper镜像 + +​ 编写Dockerfile制作ZooKeeper镜像,镜像名为chinaskill-zookeeper:v1.1,使用centos:7.9.2009基础镜像,安装ZooKeeper服务,开放端口2181;并设置服务开机自启 + +```shell +[root@xingdian zookeeper]# ls +apache-zookeeper-3.6.3-bin Dockerfile jdk-8u211-linux-x64.tar.gz +apache-zookeeper-3.6.3-bin.tar.gz jdk1.8.0_211 +``` + +​ zookeeper下载地址:https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz + +```shell +[root@xingdian zookeeper]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz --no-check-certificate +``` + +​ JDK下载地址:https://share.weiyun.com/LHhEjTmG + +​ 编写Dockerfile文件 + +```shell +[root@xingdian zookeeper]# cat Dockerfile +FROM centos:centos7.5.1804 +MAINTAINER Chinaskill +ADD jdk-8u211-linux-x64.tar.gz /usr/local +ADD apache-zookeeper-3.6.3-bin.tar.gz /usr/local/ +RUN yum -y install vim net-tools telnet tree git wget +WORKDIR /usr/local +ENV JAVA_HOME=/usr/local/jdk1.8.0_211 +ENV PATH=$JAVA_HOME/bin:$PATH +ENV ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.6.3-bin +RUN cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg +EXPOSE 2181 +CMD $ZOOKEEPER_HOME/bin/zkServer.sh start-foreground +``` + +​ 构建镜像 + +```shell +[root@xingdian zookeeper]# docker build -t chinaskill-zookeeper:v1.1 . +``` + +4.kafka镜像 + +​ 编写Dockerfile制作Kafka镜像,镜像名为chinaskill-kafka:v1.1,使用centos:centos7.9.2009基础镜像,安装Kafka服务,开放端口9092,并设置服务开机自启 + +```shell +[root@nfs-harbor kafka]# ls +Dockerfile jdk-8u211-linux-x64.tar.gz kafka_2.11-2.1.0.tgz start.sh +``` + +​ kafka下载地址:https://archive.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz + +```shell +[root@xingdian kafka]# wget https://archive.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz +``` + +​ JDK下载地址:https://share.weiyun.com/LHhEjTmG + +​ 编写Dockerfile文件 + +```shell +[root@nfs-harbor kafka]# cat start.sh +$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties & +sleep 20 +$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties +``` + +```shell +[root@nfs-harbor kafka]# cat Dockerfile +FROM centos:7 +ADD jdk-8u211-linux-x64.tar.gz /usr/local +ADD kafka_2.11-2.0.0.tgz /usr/local +ENV JAVA_HOME=/usr/local/jdk1.8.0_211 +ENV PATH=$PATH:$JAVA_HOME/bin +ENV KAFKA_HOME=/usr/local/kafka_2.11-2.0.0 +EXPOSE 9092 +COPY start.sh / +CMD ["sh","/start.sh"] +``` + +​ 构建镜像 + +```shell +[root@xingdian kafka]# docker build -t chinaskill-kafka:v1.1 . +``` + +#### 4.nginx镜像 + +```shell +[root@xingdian nginx]# ls +default.conf nginx-1.22.0 +dist.tar.gz nginx-1.22.0.tar.gz +Dockerfile nginx.conf +gpmall-shopping-0.0.1-SNAPSHOT.jar shopping-provider-0.0.1-SNAPSHOT.jar +gpmall-user-0.0.1-SNAPSHOT.jar user-provider-0.0.1-SNAPSHOT.jar +jdk-8u211-linux-x64.tar.gz +``` + +​ nginx下载地址:https://nginx.org/download/nginx-1.22.0.tar.gz + +​ JDK下载地址:https://share.weiyun.com/LHhEjTmG + +```shell +[root@xingdian nginx]# wget https://nginx.org/download/nginx-1.22.0.tar.gz +``` + +​ nginx配置文件 + +```shell +[root@nfs-harbor nginx]# cat nginx.conf + +#user nobody; +worker_processes 1; + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + server { + listen 80; + server_name localhost; + + #charset koi8-r; + + #access_log logs/host.access.log main; + + location / { + root /opt/nginx/html; + index index.html index.htm; + } + + #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 html; + } + location /user { + proxy_pass http://127.0.0.1:8082; + } + location /shopping { + proxy_pass http://127.0.0.1:8081; + } + location /cashier { + proxy_pass http://127.0.0.1:8083; + } + # 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; + #} + } + + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + + + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + +} +``` + +​ 编写Dockerfile文件 + +```shell +[root@xingdian nginx]# cat start.sh +java -jar /opt/nginx/html/shopping-provider-0.0.1-SNAPSHOT.jar & +sleep 20 +java -jar /opt/nginx/html/user-provider-0.0.1-SNAPSHOT.jar & +sleep 20 +java -jar /opt/nginx/html/gpmall-shopping-0.0.1-SNAPSHOT.jar & +sleep 20 +java -jar /opt/nginx/html/gpmall-user-0.0.1-SNAPSHOT.jar +``` + +```shell +[root@xingdian nginx]# cat Dockerfile +FROM centos:centos7.5.1804 +MAINTAINER Chinaskill +ENV TZ=Asia/Shanghai +ENV LANG=en_US.UTF-8 +ENV LANGUAGE=en_US:en +ENV LC_ALL=en_US.UTF-8 +ADD jdk-8u211-linux-x64.tar.gz /usr/local +WORKDIR /usr/local +ENV JAVA_HOME=/usr/local/jdk1.8.0_211 +RUN yum -y install gcc openssl openssl-devel pcre-devel zlib-devel make +ADD nginx-1.22.0.tar.gz /opt +WORKDIR /opt/nginx-1.22.0 +RUN ./configure --prefix=/opt/nginx +RUN make && make install +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/nginx/sbin:$JAVA_HOME/bin +EXPOSE 80 443 +ADD dist.tar.gz /opt/nginx/html +COPY gpmall-shopping-0.0.1-SNAPSHOT.jar /opt/nginx/html +COPY gpmall-user-0.0.1-SNAPSHOT.jar /opt/nginx/html +COPY shopping-provider-0.0.1-SNAPSHOT.jar /opt/nginx/html +COPY user-provider-0.0.1-SNAPSHOT.jar /opt/nginx/html +COPY nginx.conf /opt/nginx/conf/ +RUN chmod a+x /start.sh +#RUN nohup java -jar /opt/nginx/html/shopping-provider-0.0.1-SNAPSHOT.jar & +#RUN nohup java -jar /opt/nginx/html/user-provider-0.0.1-SNAPSHOT.jar & +#RUN nohup java -jar /opt/nginx/html/gpmall-shopping-0.0.1-SNAPSHOT.jar & +#RUN nohup java -jar /opt/nginx/html/gpmall-user-0.0.1-SNAPSHOT.jar & +CMD /opt/nginx/sbin/nginx && /start.sh +``` + +​ 镜像构建 + +```shell +[root@xingdian nginx]# docker build -t chinaskill-nginx:v1.1 . +``` + +#### 5.容器互联 + +​ 编写docker-compose + +```shell +[root@xingdian cloud]# cat docker-compose.yml +version: "3" +services: + mysql.mall: + container_name: mall-mysql + image: chinaskill-mariadb:v1.1 + environment: + MARIADB_ROOT_PASSWORD: 123456 + restart: always + hostname: mysql.mall + + redis.mall: + container_name: mall-redis + image: chinaskill-redis:v1.1 + restart: always + hostname: redis.mall + + zookeeper.mall: + container_name: mall-zookeeper + image: chinaskill-zookeeper:v1.1 + restart: always + hostname: zookeeper.mall + + kafka.mall: + depends_on: + - zookeeper.mall + container_name: mall-kafka + image: chinaskill-kafka:v1.1 + restart: always + hostname: kafka.mall + + mall: + container_name: mall-nginx + image: chinaskill-nginx:v1.1 + links: + - mysql.mall + - redis.mall + - zookeeper.mall + - kafka.mall + ports: + - "83:80" +``` + +​ 启动 + +```shell +[root@xingdian cloud]# docker-compose up -d +``` + +​ 查看 + +```shell +[root@xingdian cloud]# docker-compose ps + Name Command State Ports +---------------------------------------------------------------------------------------- +mall-kafka sh /a.sh Up 9092/tcp +mall-mysql docker-entrypoint.sh mariadbd Up 3306/tcp +mall-nginx /bin/sh -c /opt/nginx/sbin ... Up 443/tcp, 0.0.0.0:83->80/tcp,:: + :83->80/tcp +mall-redis redis-server /opt/redis/re ... Up 6379/tcp +mall-zookeeper /bin/sh -c $ZOOKEEPER_HOME ... Up 2181/tcp +``` + +#### 6.浏览器访问 + +![image-20220820140224682](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220820140224682.png)