容器编排技术

容器编排技术

1.1实战案例——容器化部署基础服务

1.1.1 案例目标

(1)了解Redis服务的容器化部署。

(2)了解ZooKeeper服务的容器化部署。

(3)了解Kafka服务的容器化部署。

1.1.2 案例分析

1.规划节点

节点规划,见表1-1-1。

表1-1-1节点规划

IP

主机名

节点

192.168.127.131

Docker

docker-compose节点

2.基础准备

Docker和Docker Compose已安装完成。

1.1.3 案例实施

1.Redis容器化部署

(1)编写Dockerfile

准备:CRT上传gpmall.tar,解压出gpmall-single(在这个gpmall-single目录下进行)

新建redis文件夹:

#cd gpmall-single

# mkdir redis

# cp -rfv gpmall.tar redis/

# cd redis/

编写yum文件

# vi local.repo

[gpmall] 

name=gpmall

baseurl=file:///opt/gpmall

gpgcheck=0

enabled=1

编写Dockerfile文件:

# vi Dockerfile

FROM centos:centos7.5.1804

MAINTAINER Guo

# 配置yum源

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

#安装Redis

RUN yum -y install redis

# 开放端口

EXPOSE 6379

#安装清理缓存文件

RUN yum clean all

#修改绑定IP地址

RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf

#关闭保护模式

RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis.conf

#启动

ENTRYPOINT [ "/usr/bin/redis-server","/etc/redis.conf"]

CMD []

(2)构建镜像

构建镜像gpmall-redis:v1.0:

# docker build -t gpmall-redis:v1.0 .

Sending build context to Docker daemon  205.8MB

Step 1/12 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/12 : MAINTAINER Guo

 ---> Using cache

 ---> b4d633dadd5e

Step 3/12 : ADD gpmall.tar /opt

 ---> Using cache

 ---> b58dec382d84

Step 4/12 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> 8e2aca1a0f20

Step 5/12 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> f79ec9dd533a

Step 6/12 : RUN yum -y install redis

 ---> Using cache

 ---> be0ed0909213

Step 7/12 : EXPOSE 6379

 ---> Using cache

 ---> d2c6b350662a

Step 8/12 : RUN yum clean all

 ---> Using cache

 ---> cd615f0564cb

Step 9/12 : RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf

 ---> Using cache

 ---> 0a53db67053a

Step 10/12 : RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis.conf

 ---> Using cache

 ---> c631d6189382

Step 11/12 : ENTRYPOINT [ "/usr/bin/redis-server","/etc/redis.conf"]

 ---> Using cache

 ---> 20dda0bfe10a

Step 12/12 : CMD []

 ---> Using cache

 ---> 2231cea1ba1f

Successfully built 2231cea1ba1f

Successfully tagged gpmall-redis:v1.0

查看镜像列表:

[root@docker gpmall-single]# docker images

REPOSITORY     TAG              IMAGE ID       CREATED         SIZE

gpmall-redis   v1.0             5c7283b0515c   6 minutes ago   465MB

测试Redis:

[root@docker gpmall-single]# docker run -d --name=redis -p6379:6379 gpmall-redis:v1.0

48fc5822ad02682fd1c868e268baac55b16d00609777d9e34e33463c8db565b2

[root@docker gpmall-single]# docker exec redis redis-server -v

Redis server v=6.0.8 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=611051ae86733216

[root@docker gpmall-single]# docker rm -f redis

redis

2.Mariadb容器化部署

(1)编写Dockerfile

新建redis文件夹:

# mkdir mariadb

# cp -rfv gpmall.tar mariadb/

# cd mariadb/

编写初始化脚本run.sh:

# vi run.sh

#!/bin/bash

mysql_install_db --user=mysql

(mysqld_safe &) | grep a

sleep 3s

ps -A

netstat -ntpl

sleep 3s

mysqladmin -u root password '123456'

sleep 3s

mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'"

sleep 3s

mysql -uroot -p123456 -e "create database gpmall;use gpmall;source /opt/gpmall.sql;"

sleep 3s

编写Dockerfile文件:(覆盖前面的Dockerfile文件)

# cat Dockerfile

FROM centos:centos7.5.1804

MAINTAINER Guo

 

# 配置yum源

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

 

# 安装MariaDB

RUN yum install -y MariaDB-server expect net-tools

RUN yum clean all

COPY gpmall.sql /opt/

ADD run.sh /opt/

RUN chmod +x /opt/run.sh

RUN /opt/run.sh

ENV LC_ALL en_US.UTF-8

EXPOSE 3306

CMD ["mysqld_safe"]

(2)构建镜像

构建镜像:

# docker build -t gpmall-mariadb:v1.0 .

Sending build context to Docker daemon  205.9MB

Step 1/14 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/14 : MAINTAINER Guo

 ---> Using cache

 ---> 5f61e17c7c79

Step 3/14 : ADD gpmall.tar /opt

 ---> Using cache

 ---> 09b937f9fb48

Step 4/14 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> cb6f6a6638df

Step 5/14 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> 36e6b13dba63

Step 6/14 : RUN yum install -y MariaDB-server expect net-tools

 ---> Using cache

 ---> 598dde8e6b3b

Step 7/14 : RUN yum clean all

 ---> Using cache

 ---> c5e01221c6a1

Step 8/14 : COPY gpmall.sql /opt/

 ---> Using cache

 ---> 56de12688c38

Step 9/14 : ADD run.sh /opt/

 ---> Using cache

 ---> 836c8678be49

Step 10/14 : RUN chmod +x /opt/run.sh

 ---> Using cache

 ---> c72703657aba

Step 11/14 : RUN /opt/run.sh

 ---> Using cache

 ---> 37d28f376142

Step 12/14 : ENV LC_ALL en_US.UTF-8

 ---> Using cache

 ---> 88067c80269c

Step 13/14 : EXPOSE 3306

 ---> Using cache

 ---> ac4235abd4eb

Step 14/14 : CMD ["mysqld_safe"]

 ---> Using cache

 ---> 9af909433712

Successfully built 9af909433712

Successfully tagged gpmall-mariadb:v1.0

查看镜像列表:

# docker images

REPOSITORY          TAG         IMAGE ID        CREATED         SIZE

gpmall-mariadb       v1.0        2eb62863f75e        6 minutes ago       974MB

验证mariadb:(做这一步要把博客干掉)

# docker run -d -p 3306:3306 --name mariadb gpmall-mariadb:v1.0

fd88839814cf3c77b5c16922f235f60cb1c8fceb0c98499d1ba70139de59db61

# docker exec mariadb mysql -uroot -p123456 -e "use gpmall;show tables;"

Tables_in_gpmall

tb_address

tb_base

tb_comment

tb_comment_picture

tb_comment_reply

tb_dict

tb_express

tb_item

tb_item_cat

tb_item_desc

tb_log

tb_member

tb_order

tb_order_item

tb_order_shipping

tb_panel

tb_panel_content

tb_payment

tb_refund

tb_stock

tb_user_verify

3.ZooKeeper容器化部署

(1)编写Dockerfile

新建zookeeper文件夹:

# mkdir zookeeper/

# cd zookeeper/

# cp -rfv /root/gpmall-single/local.repo .

# cp -rfv /root/gpmall-single/gpmall.tar .

# cp -rfv /root/gpmall-single/zookeeper-3.4.14.tar.gz .

#cd ..

编写Dockerfile文件:(覆盖上一个Dockerfile文件)

# vi  Dockerfile

FROM centos:centos7.5.1804

MAINTAINER Guo

 

# 配置yum源

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

 

# 安装JDK

RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 

ENV work_path /usr/local

WORKDIR $work_path

 

# 安装ZooKeeper

ADD zookeeper-3.4.14.tar.gz /usr/local

ENV ZOOKEEPER_HOME /usr/local/zookeeper-3.4.14

 

# PATH

ENV PATH $PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin

RUN cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

 

EXPOSE 2181

 

# 设置开机自启

CMD $ZOOKEEPER_HOME/bin/zkServer.sh start-foreground

(2)构建镜像

构建镜像gpmall-zookeeper:v1.0:

# docker build -t gpmall-zookeeper:v1.0 .

Sending build context to Docker daemon  304.8MB

Step 1/14 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/14 : MAINTAINER Guo

 ---> Using cache

 ---> b4d633dadd5e

Step 3/14 : ADD gpmall.tar /opt

 ---> Using cache

 ---> b58dec382d84

Step 4/14 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> 8e2aca1a0f20

Step 5/14 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> f79ec9dd533a

Step 6/14 : RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 ---> Using cache

 ---> 7066e3436719

Step 7/14 : ENV work_path /usr/local

 ---> Using cache

 ---> 65cbe0a184b1

Step 8/14 : WORKDIR $work_path

 ---> Using cache

 ---> e71dd5efd193

Step 9/14 : ADD zookeeper-3.4.14.tar.gz /usr/local

 ---> Using cache

 ---> d4b53ddce547

Step 10/14 : ENV ZOOKEEPER_HOME /usr/local/zookeeper-3.4.14

 ---> Using cache

 ---> 902b433b6e20

Step 11/14 : ENV PATH $PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin

 ---> Using cache

 ---> 351328ff20e6

Step 12/14 : RUN cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

 ---> Using cache

 ---> 62b577d2067c

Step 13/14 : EXPOSE 2181

 ---> Using cache

 ---> bc62b94ed6dd

Step 14/14 : CMD $ZOOKEEPER_HOME/bin/zkServer.sh start-foreground

 ---> Using cache

 ---> 1791a788e338

Successfully built 1791a788e338

Successfully tagged gpmall-zookeeper:v1.0

查看镜像列表:

# docker images

REPOSITORY      TAG       IMAGE ID         CREATED        SIZE

gpmall-zookeeper   v1.0        1791a788e338       2 minutes ago      740MB

测试ZooKeeper:

# docker run -d --name=zookeeper -p2181:2181 gpmall-zookeeper:v1.0

726954e47bb0977452ef5c044016047ffcbf7e7892b8e1fc215b56c957da05b5

[root@docker gpmall-single]# docker exec -it zookeeper /bin/bash

[root@726954e47bb0 local]# cd zookeeper-3.4.14/bin/

[root@726954e47bb0 bin]# ./zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg

Mode: standalone

[root@726954e47bb0 bin]# exit

exit

# docker rm -f zookeeper

zookeeper

4.Kafka容器化部署

(1)编写Dockerfile

新建kafka文件夹:

# mkdir kafka

# cd kafka/

# cp -rfv /root/gpmall-single/local.repo .

# cp -rfv /root/gpmall-single/gpmall.tar .

# cp -rfv /root/gpmall-single/kafka_2.11-1.1.1.tgz .

编写Dockerfile文件:(覆盖)

# vi Dockerfile

FROM centos:centos7.5.1804

MAINTAINER Guo

 

# 配置yum源

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

 

# 安装基础环境

RUN yum -y install vim lsof wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel pwgen python-pip

 

# 安装JDK

RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 

# 安装Kafka

RUN mkdir /opt/kafka

ADD kafka_2.11-1.1.1.tgz /opt/kafka

RUN sed -i 's/num.partitions.*$/num.partitions=3/g' /opt/kafka/kafka_2.11-1.1.1/config/server.properties

 

RUN echo "source /root/.bash_profile" > /opt/kafka/start.sh &&\

    echo "cd /opt/kafka/kafka_2.11-1.1.1" >> /opt/kafka/start.sh &&\

    echo "sed -i 's%zookeeper.connect=.*$%zookeeper.connect=zookeeper.mall:2181%g' /opt/kafka/kafka_2.11-1.1.1/config/server.properties" >> /opt/kafka/start.sh &&\

    echo "bin/kafka-server-start.sh config/server.properties" >> /opt/kafka/start.sh &&\

    chmod a+x /opt/kafka/start.sh

 

EXPOSE 9092

 

ENTRYPOINT ["sh", "/opt/kafka/start.sh"]

(2)构建镜像

构建镜像:

# docker build -t gpmall-kafka:v1.0 .

Sending build context to Docker daemon  511.3MB

Step 1/13 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/13 : MAINTAINER Guo

 ---> Using cache

 ---> 5f61e17c7c79

Step 3/13 : ADD gpmall.tar /opt

 ---> Using cache

 ---> 09b937f9fb48

Step 4/13 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> cb6f6a6638df

Step 5/13 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> 36e6b13dba63

Step 6/13 : RUN yum -y install vim lsof wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel pwgen python-pip

 ---> Using cache

 ---> c652b8dd146b

Step 7/13 : RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 ---> Using cache

 ---> 8647fb079562

Step 8/13 : RUN mkdir /opt/kafka

 ---> Using cache

 ---> 038f39230699

Step 9/13 : ADD kafka_2.11-1.1.1.tgz /opt/kafka

 ---> Using cache

 ---> eebeec9bed3e

Step 10/13 : RUN sed -i 's/num.partitions.*$/num.partitions=3/g' /opt/kafka/kafka_2.11-1.1.1/config/server.properties

 ---> Using cache

 ---> 7b9c1f5dfa31

Step 11/13 : RUN echo "source /root/.bash_profile" > /opt/kafka/start.sh &&    echo "cd /opt/kafka/kafka_2.11-1.1.1" >> /opt/kafka/start.sh &&    echo "sed -i 's%zookeeper.connect=.*$%zookeeper.connect=zookeeper.mall:2181%g' /opt/kafka/kafka_2.11-1.1.1/config/server.properties" >> /opt/kafka/start.sh &&    echo "bin/kafka-server-start.sh config/server.properties" >> /opt/kafka/start.sh &&    chmod a+x /opt/kafka/start.sh

 ---> Using cache

 ---> 4f2374802e5e

Step 12/13 : EXPOSE 9092

 ---> Using cache

 ---> df6efd678972

Step 13/13 : ENTRYPOINT ["sh", "/opt/kafka/start.sh"]

 ---> Using cache

 ---> 684851db6a59

Successfully built 684851db6a59

Successfully tagged gpmall-kafka:v1.0

查看镜像:

# docker images

REPOSITORY       TAG          IMAGE ID            CREATED       SIZE

gpmall-kafka        v1.0        96d05880f0cd        11 minutes ago       820MB

5.Elasticsearch容器化部署

(1)编写Dockerfile

新建elasticsearch文件夹:

# mkdir elasticsearch

# cd elasticsearch/

# cp -rfv /root/gpmall-single/local.repo .

# cp -rfv /root/gpmall-single/gpmall.tar .

#cd ..

编写脚本:

# vi entrypoint.sh

su admin -c "sh /opt/elasticsearch-5.5.3/bin/elasticsearch -d"

tail -f /opt/elasticsearch-5.5.3/logs/my-application.log

# chmod +x entrypoint.sh

编写Dockerfile:(覆盖)

# vi Dockerfile

FROM centos:centos7.5.1804

MAINTAINER guo

WORKDIR /

COPY entrypoint.sh entrypoint.sh

WORKDIR /opt

 

# 配置yum源

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

 

RUN yum install -y net-tools java-1.8.0-openjdk java-1.8.0-openjdk-devel

 

# 安装Elasticsearch

COPY elasticsearch-5.5.3.tar.gz elasticsearch-5.5.3.tar.gz

RUN tar zxvf elasticsearch-5.5.3.tar.gz && rm -rf elasticsearch-5.5.3.tar.gz && groupadd admin && useradd admin -g admin && chown -R admin:admin .

RUN echo "network.host: 0.0.0.0" >>elasticsearch-5.5.3/config/elasticsearch.yml

RUN echo "http.port: 9200" >>elasticsearch-5.5.3/config/elasticsearch.yml

RUN echo "cluster.name: my-application" >>elasticsearch-5.5.3/config/elasticsearch.yml

RUN echo "http.cors.enabled: true" >>elasticsearch-5.5.3/config/elasticsearch.yml

RUN echo "http.cors.allow-origin: \"*\"" >>elasticsearch-5.5.3/config/elasticsearch.yml

RUN su admin -c "mkdir -p /opt/elasticsearch-5.5.3/logs && touch /opt/elasticsearch-5.5.3/logs/my-application.log"

RUN echo "vm.max_map_count=655360" >>/etc/sysctl.conf

VOLUME ["/opt"]

EXPOSE 9200

EXPOSE 9300

USER root

ENTRYPOINT ["/bin/sh","/entrypoint.sh"]

HEALTHCHECK --interval=5s --timeout=3s CMD status=`netstat -an | grep -wi listen | grep 9200 | wc -l`;if [ $status eq 1 ]; then echo "0"; else echo "1"; fi

(2)构建镜像

构建镜像gpmall-elasticsearch:v1.0:(要上传一个文件elasticsearch-5.5.3.tar.gz)

# docker build -t gpmall-elasticsearch:v1.0 .

Sending build context to Docker daemon  239.3MB

Step 1/24 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/24 : MAINTAINER guo

 ---> Using cache

 ---> f0a929e2a057

Step 3/24 : WORKDIR /

 ---> Using cache

 ---> 1448fa2223c6

Step 4/24 : COPY entrypoint.sh entrypoint.sh

 ---> Using cache

 ---> 8d1a9dc792b5

Step 5/24 : WORKDIR /opt

 ---> Using cache

 ---> fa9e4c209047

Step 6/24 : ADD gpmall.tar /opt

 ---> Using cache

 ---> 0dc577a7055b

Step 7/24 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> f0d2844c40f4

Step 8/24 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> a3de951573d1

Step 9/24 : RUN yum install -y net-tools java-1.8.0-openjdk java-1.8.0-openjdk-devel

 ---> Using cache

 ---> ac08dc528521

Step 10/24 : COPY elasticsearch-5.5.3.tar.gz elasticsearch-5.5.3.tar.gz

 ---> Using cache

 ---> f566ca029b78

Step 11/24 : RUN tar zxvf elasticsearch-5.5.3.tar.gz && rm -rf elasticsearch-5.5.3.tar.gz && groupadd admin && useradd admin -g admin && chown -R admin:admin .

 ---> Using cache

 ---> 6fc5cc5c7481

Step 12/24 : RUN echo "network.host: 0.0.0.0" >>elasticsearch-5.5.3/config/elasticsearch.yml

 ---> Using cache

 ---> c4181e326a11

Step 13/24 : RUN echo "http.port: 9200" >>elasticsearch-5.5.3/config/elasticsearch.yml

 ---> Using cache

 ---> fdfae127a02b

Step 14/24 : RUN echo "cluster.name: my-application" >>elasticsearch-5.5.3/config/elasticsearch.yml

 ---> Using cache

 ---> 91c1e3700dcc

Step 15/24 : RUN echo "http.cors.enabled: true" >>elasticsearch-5.5.3/config/elasticsearch.yml

 ---> Using cache

 ---> afff2c9da274

Step 16/24 : RUN echo "http.cors.allow-origin: \"*\"" >>elasticsearch-5.5.3/config/elasticsearch.yml

 ---> Using cache

 ---> a1288a70d0fc

Step 17/24 : RUN su admin -c "mkdir -p /opt/elasticsearch-5.5.3/logs && touch /opt/elasticsearch-5.5.3/logs/my-application.log"

 ---> Using cache

 ---> 65fe73d789bf

Step 18/24 : RUN echo "vm.max_map_count=655360" >>/etc/sysctl.conf

 ---> Using cache

 ---> ddeb78acb6b6

Step 19/24 : VOLUME ["/opt"]

 ---> Using cache

 ---> 72c54a78db78

Step 20/24 : EXPOSE 9200

 ---> Using cache

 ---> d468bb225c4c

Step 21/24 : EXPOSE 9300

 ---> Using cache

 ---> 251ef6b0e296

Step 22/24 : USER root

 ---> Using cache

 ---> 6fd94310b2a6

Step 23/24 : ENTRYPOINT ["/bin/sh","/entrypoint.sh"]

 ---> Using cache

 ---> 735305e3618b

Step 24/24 : HEALTHCHECK --interval=5s --timeout=3s CMD status=`netstat -an | grep -wi listen | grep 9200 | wc -l`;if [ $status eq 1 ]; then echo "0"; else echo "1"; fi

 ---> Using cache

 ---> eae45bc2124d

Successfully built eae45bc2124d

Successfully tagged gpmall-elasticsearch:v1.0

查看镜像列表:

# docker images

REPOSITORY        TAG        IMAGE ID         CREATED      SIZE

gpmall-elasticsearch    v1.0       21281043d762       About a minute ago   969MB

1.2实战案例——容器化部署应用系统

1.2.1 案例目标

(1)了解docker-compose.yaml文件的编写方法。

(2)了解容器编排中容器互联的方式。

(3)掌握GPMall商城的编排部署步骤和方法。

1.2.2 案例分析

1.规划节点

节点规划,见表1-2-1。

表1-2-1节点规划

IP

主机名

节点

192.168.127.131

Docker

docker-compose节点

2.基础准备

Docker和Docker Compose已安装完成,基础镜像已构建完毕。

1.2.3 案例实施

1.容器化部署前端服务

(1)编写Dockerfile

# mkdir nginx

# cd nginx/

# cp -rfv /root/gpmall-single/local.repo .

# cp -rfv /root/gpmall-single/gpmall.tar .

# 解压tar包:

[root@docker gpmall-single]# tar xf dist.tar

[root@docker gpmall-single]# mv dist.tar nginx/

[root@docker nginx]# mkdir dist

[root@docker nginx]# tar xf dist

tar: dist: Cannot read: Is a directory

tar: At beginning of tape, quitting now

tar: Error is not recoverable: exiting now

[root@docker nginx]# tar xf dist.tar

[root@docker nginx]# mv index.html dist

[root@docker nginx]# mv static dist

[root@docker nginx]# mv ../*.jar .

编写nginx配置文件default.conf:

# vi default.conf

server {

    listen       80;

    server_name  localhost;

 

    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;

 

    location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

    }

    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;

        }

    #error_page  404              /404.html;

}

编写启动脚本:

# vi run.sh

#!/bin/bash

nohup java -jar /root/user-provider-0.0.1-SNAPSHOT.jar &

sleep 6

nohup java -jar /root/shopping-provider-0.0.1-SNAPSHOT.jar &

sleep 6

nohup java -jar /root/gpmall-shopping-0.0.1-SNAPSHOT.jar &

sleep 6

nohup java -jar /root/gpmall-user-0.0.1-SNAPSHOT.jar &

sleep 6

nginx -g "daemon off;"

编写Dockerfile:

# vi  Dockerfile

FROM centos:centos7.5.1804

MAINTAINER Guo

 

# 配置yum源

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

 

RUN yum install -y cmake pcre pcre-devel openssl openssl-devel zlib-devel gcc gcc-c++ net-tools

# 安装JDK

RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 

RUN yum install nginx -y

RUN rm -rf /usr/share/nginx/html/*

ADD dist.tar /usr/share/nginx/html/

COPY default.conf /etc/nginx/conf.d/

COPY gpmall-shopping-0.0.1-SNAPSHOT.jar /root

COPY gpmall-user-0.0.1-SNAPSHOT.jar /root

COPY shopping-provider-0.0.1-SNAPSHOT.jar /root

COPY user-provider-0.0.1-SNAPSHOT.jar /root

COPY run.sh /root

RUN chmod +x /root/run.sh

 

EXPOSE 80 443

CMD nginx -g "daemon off;"

(2)构建镜像:

构建镜像:

# docker build -t gpmall-nginx:v1.0 .

Sending build context to Docker daemon  427.5MB

Step 1/19 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/19 : MAINTAINER Guo

 ---> Using cache

 ---> 5f61e17c7c79

Step 3/19 : ADD gpmall.tar /opt

 ---> Using cache

 ---> 09b937f9fb48

Step 4/19 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> cb6f6a6638df

Step 5/19 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> 36e6b13dba63

Step 6/19 : RUN yum install -y cmake pcre pcre-devel openssl openssl-devel zlib-devel gcc gcc-c++ net-tools

 ---> Using cache

 ---> c00902211337

Step 7/19 : RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 ---> Using cache

 ---> 88d6e165e766

Step 8/19 : RUN yum install nginx -y

 ---> Using cache

 ---> 91942db57d74

Step 9/19 : RUN rm -rf /usr/share/nginx/html/*

 ---> Using cache

 ---> 693b0dbe7098

Step 10/19 : ADD dist.tar /usr/share/nginx/html/

 ---> Using cache

 ---> 8dc15014e890

Step 11/19 : COPY default.conf /etc/nginx/conf.d/

 ---> Using cache

 ---> f313df54ff54

Step 12/19 : COPY gpmall-shopping-0.0.1-SNAPSHOT.jar /root

 ---> Using cache

 ---> 126c2d22f161

Step 13/19 : COPY gpmall-user-0.0.1-SNAPSHOT.jar /root

 ---> Using cache

 ---> 62ed39964800

Step 14/19 : COPY shopping-provider-0.0.1-SNAPSHOT.jar /root

 ---> Using cache

 ---> b39a1ce2df7e

Step 15/19 : COPY user-provider-0.0.1-SNAPSHOT.jar /root

 ---> Using cache

 ---> a08765ce6247

Step 16/19 : COPY run.sh /root

 ---> Using cache

 ---> e88156f96022

Step 17/19 : RUN chmod +x /root/run.sh

 ---> Using cache

 ---> 9c15797c7512

Step 18/19 : EXPOSE 80 443

 ---> Using cache

 ---> 4efa9ffd81b6

Step 19/19 : CMD nginx -g "daemon off;"

 ---> Using cache

 ---> 7304e4b5d8a8

Successfully built 7304e4b5d8a8

Successfully tagged gpmall-nginx:v1.0

查看镜像列表:

# docker images

REPOSITORY          TAG          IMAGE ID        CREATED       SIZE

gpmall-nginx         v1.0         7304e4b5d8a8      13 minutes ago      1.06GB

2.编排部署GPMall

(1)编写docker-compose.yaml

新建文件夹:

[root@docker gpmall-single]# mkdir gpmall

[root@docker gpmall-single]# cd gpmall

编写docker-compose.yaml:(脚本在gpmall-single目录下的gpmall目录下)

[root@docker gpmall]# vi docker-compose.yaml

version: "3"

 

services:

  mysql.mall:

    container_name: mysql

    image: gpmall-mariadb:v1.0

    ports:

      - "3306:3306"

    restart: always

 

  redis.mall:

    depends_on:

      - mysql.mall

    container_name: redis

    image: gpmall-redis:v1.0

    ports:

      - "6379:6379"

    restart: always

 

  zookeeper.mall:

    depends_on:

      - mysql.mall

      - redis.mall

    container_name: zookeeper

    image: gpmall-zookeeper:v1.0

    ports:

      - "2181:2181"

    restart: always

 

  kafka.mall:

    links:

      - zookeeper.mall

    depends_on:

      - mysql.mall

      - redis.mall

      - zookeeper.mall

    container_name: kafka

    image: gpmall-kafka:v1.0

    ports:

      - "9092:9092"

    restart: always

 

  mall:

    container_name: nginx

    image: gpmall-nginx:v1.0

    links:

      - mysql.mall

      - redis.mall

      - zookeeper.mall

      - kafka.mall

    depends_on:

      - mysql.mall

      - redis.mall

      - zookeeper.mall

      - kafka.mall

    ports:

      - 80:80

      - "443:443"

      - "8081:8081"

      - "8082:8082"

      - "8083:8083"

    privileged: true

    command: /root/run.sh

(2)部署服务

启动服务:(如果报错就是有数据库了,把数据库干掉)

[root@docker gpmall]#docker-compose up -d

Creating network "gpmall_default" with the default driver

Creating mysql ... done

Creating redis ... done

Creating zookeeper ... done

Creating kafka     ... done

Creating nginx     ... done

查看:

[root@docker gpmall]# docker-compose ps

  Name             Command               State               Ports

------------------------------------------------------------------------------------------------------

kafka       sh /opt/kafka/start.sh           Up      0.0.0.0:9092->9092/tcp                          

mysql       mysqld_safe                   Up      0.0.0.0:3306->3306/tcp                          

nginx       /root/run.sh         Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp,

                                 0.0.0.0:8081->8081/tcp, 0.0.0.0:8082->8082/tcp, 

                                                     0.0.0.0:8083->8083/tcp                           

redis       /usr/bin/redis-server /etc ...   Up      0.0.0.0:6379->6379/tcp                          

zookeeper   /bin/sh -c $ZOOKEEPER_HOME ...   Up      0.0.0.0:2181->2181/tcp

在浏览器上通过http://192.168.127.131访问GPMall,如图所示:

posted @   YJinHAI  阅读(278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示