Docker部署微服务
    实验准备:
    准备一台虚拟机4G以上内存
    将网络模式更改为nat模式,在编辑——>虚拟网络编辑器内更改NAT模式的网段ip为10.0.0.0,子网掩码为255.255.255.0
    docker部署微服务项目 - 图1
    docker部署微服务项目 - 图2
    随后进入虚拟机进行更改:
    >vi /etc/sysconfig/network-scripts/ifcfg-ens33
    将BOOTPROTO改为none或者stasic(静态ip获取)
    随后在最下方另起一行添加:
    IPADDR=10.0.0.220
    GATEWAY=10.0.0.2
    PREFIX=24
    DNS1=114.114.114.114
    docker部署微服务项目 - 图3
    保存退出
    重启网络
    >systemctl restart network
    检验:
    >ping www.baidu.com
    关闭防火墙以及selinux保证base、epel仓库可用,网络畅通
    一、部署docker
    配置阿里云docker yum源:
    >yum install -y yum-utils device-mapper-persistent-data lvm2 git
    >yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    安装指定版本:
    可以使用
    >yum list docker-ce —showduplicates
    查看版本
    需要指定完整的rpm包的包名,并且加上—setopt=obsoletes=0
    参数:
    > yum install -y —setopt=obsoletes=0 \
    docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
    docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
    安装Docker新版本(比如Docker 19.03.0):
    >yum install docker-ce-19.03.0.ce -y
    或者
    >yum install docker-ce -y
    下载完毕后启动docker:
    >systemctl start docker
    >systemctl enable docker
    查看docker运行状态:
    >docker info
    随后部署centos镜像到我们的服务器备用
    具体流程:
    国内镜像站
    https://www.daocloud.io
    国外镜像站
    https://hub.docker.com
    登录以上两个仓库注册账号(已有账号请跳过)
    随后点击我的账户
    docker部署微服务项目 - 图4
    搜索c后在右侧镜像列表中找到centos
    docker部署微服务项目 - 图5
    随后点centos,往下翻找到Dockerfile内容
    docker部署微服务项目 - 图6
    复制之后回到虚拟机
    >cd
    >mkdir centos
    >cd centos
    >vim Dockerfile
    将复制的内容粘贴进去
    docker部署微服务项目 - 图7
    docker部署微服务项目 - 图8
    随后保存退出即可
    随后在当前目录
    >docker build -t centos:7 .
    过程较长耐心等待
    构建完毕后
    >docker images
    查看构建的centos镜像
    将需要的项目上传到服务器
    >yum -y install lftp
    > lftp www.xingdiancloud.cn
    >cd share/
    >get tensquare_admin_service-1.0-SNAPSHOT.jar
    >get tensquare_eureka_server-1.0-SNAPSHOT.jar
    >get tensquare_gathering-1.0-SNAPSHOT.jar
    >get tensquare_zuul-1.0-SNAPSHOT.jar
    >get dist.tar.gz
    docker部署微服务项目 - 图9
    随后在/opt/目录下创建对应的项目包
    >cd /opt/
    >mkdir admin
    >mkdir eureka
    >mkdir gathering
    >mkdir zuul
    同时将项目需要的jdk环境的包上传到本地/opt/目录下
    把jdk的压缩包复制到刚创建的每一个目录里
    >cp jdk-8u191-linux-x64.tar.gz /opt/admin/
    >cp jdk-8u191-linux-x64.tar.gz /opt/eureka/
    >cp jdk-8u191-linux-x64.tar.gz /opt/gathering/
    >cp jdk-8u191-linux-x64.tar.gz /opt/zuul/
    将对应的项目包放到对应的目录内:
    >mv tensquare_admin_service-1.0-SNAPSHOT.jar /opt/admin/
    >mv tensquare_eureka_server-1.0-SNAPSHOT.jar /opt/eureka/
    >mv tensquare_gathering-1.0-SNAPSHOT.jar /opt/gathering
    >mv tensquare_zuul-1.0-SNAPSHOT.jar /opt/zuul/
    docker部署微服务项目 - 图10
    随后开始创建对应的Dockerfile文件,构建镜像
    docker部署微服务项目 - 图11
    >vim admin/Dockerfile
    FROM centos:7
    MAINTAINER “admin” 1277848836@qq.com
    ADD jdk-8u191-linux-x64.tar.gz /usr/local
    RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
    ENV JAVA_HOME /usr/local/java/
    ENV PATH $PATH:$JAVA_HOME/bin
    COPY tensquare_admin_service-1.0-SNAPSHOT.jar /usr/local
    CMD java -jar /usr/local/tensquare_admin_service-1.0-SNAPSHOT.jar
    保存退出
    > vim eureka/Dockerfile
    FROM centos:7
    MAINTAINER “eureka” 1277848836@qq.com
    ADD jdk-8u191-linux-x64.tar.gz /usr/local
    RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
    ENV JAVA_HOME /usr/local/java/
    ENV PATH $PATH:$JAVA_HOME/bin
    COPY tensquare_eureka_server-1.0-SNAPSHOT.jar /usr/local
    CMD java -jar /usr/local/tensquare_eureka_server-1.0-SNAPSHOT.jar
    保存退出
    >vim gathering/Dockerfile
    FROM centos:7
    MAINTAINER “gathering” 1277848836@qq.com
    ADD jdk-8u191-linux-x64.tar.gz /usr/local
    RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
    ENV JAVA_HOME /usr/local/java/
    ENV PATH $PATH:$JAVA_HOME/bin
    COPY tensquare_gathering-1.0-SNAPSHOT.jar /usr/local
    CMD java -jar /usr/local/tensquare_gathering-1.0-SNAPSHOT.jar
    保存退出
    >vim zuul/Dockerfile
    FROM centos:7
    MAINTAINER “zuul” 1277848836@qq.com
    ADD jdk-8u191-linux-x64.tar.gz /usr/local
    RUN mv /usr/local/jdk1.8.0_191 /usr/local/java
    ENV JAVA_HOME /usr/local/java/
    ENV PATH $PATH:$JAVA_HOME/bin
    COPY tensquare_zuul-1.0-SNAPSHOT.jar /usr/local
    CMD java -jar /usr/local/tensquare_zuul-1.0-SNAPSHOT.jar
    保存退出
    更改后为下图
    docker部署微服务项目 - 图12
    开始构建镜像:
    注意此项目的端口映射:
    docker部署微服务项目 - 图13
    >cd eureka/
    > docker build -t eureka .
    > docker run -itd —name eureka —hostname eureka -p 30020:10086 eureka
    目前只启动eureka这一个镜像,其他项目先构建备用
    >cd admin/
    > docker build -t admin .
    >cd gathering/
    > docker build -t gathering .
    >cd zuul/
    >docker build -t zuul .
    随后再去拉取一个mysql的镜像
    回到docker官方仓库页面:
    docker部署微服务项目 - 图14
    docker部署微服务项目 - 图15
    docker部署微服务项目 - 图16
    docker部署微服务项目 - 图17
    回到虚拟机
    >cd /opt/
    >docker pull daocloud.io/library/mysql:5.7
    过程较久,耐心等待
    docker部署微服务项目 - 图18
    >部署完之后运行mysql镜像生成容器
    > docker run -itd —name mysql -e MYSQL_ROOT_PASSWORD=mysql -p 30023:3306 daocloud.io/library/mysql:5.7
    >将项目包的数据上传到服务器:
    >wget http://www.xingdiancloud.cn:92/index.php/s/qGGdMSZG7DEb4B4/download/tensquare_gathering.sql
    >wget http://www.xingdiancloud.cn:92/index.php/s/ZMfdz5a7C858dq6/download/tensquare_user.sql
    docker部署微服务项目 - 图19
    随后登入容器的mysql进行表的创建和数据的导入
    首先下载mysql的命令:
    >yum -y install mariadb
    随后:
    >mysql -u root -pmysql -h 10.0.0.220 -P 30023
    > MySQL [(none)]> create database tensquare_user charset=utf8;
    > MySQL [(none)]> create database tensquare_gathering charset=utf8;
    >MySQL [(none)]> use tensquare_user
    >MySQL [tensquare_user]> source /root/tensquare_user.sql
    >MySQL [tensquare_user]> use tensquare_gathering
    >MySQL [tensquare_gathering]> source /root/tensquare_gathering.sql
    注意不要盲目导入,自己的sql文件在哪就输入那里的路径

    随后构建nginx的容器:
    回到docker的官方仓库:
    docker部署微服务项目 - 图20
    docker部署微服务项目 - 图21
    docker部署微服务项目 - 图22
    回到服务器:
    > docker pull daocloud.io/library/nginx:1.12.0-alpine
    >docker images
    进行构建容器之前,先创建一个映射目录,并将dist.tar.gz中的内容解压并复制里面::
    >mkdir /nginx
    > tar xf dist.tar.gz
    >cp dist/* /nginx/ -r
    > docker run -itd —name nginx —hostname nginx -p 80:80 -v /nginx:/usr/share/nginx/html/ daocloud.io/library/nginx:1.12.0-alpine
    >chmod 777 /nginx/ -R
    启动剩余镜像:
    >cd /opt/admin
    >docker build -t admin .
    >cd /opt/gathering/
    > docker build -t gathering .
    >cd /opt/zuul/
    > docker build -t zuul .
    docker部署微服务项目 - 图23
    随后构建刚刚创建的镜像:
    > docker run -itd —name admin —hostname admin -p 30024:9001 admin
    > docker run -itd —name gathering —hostname gathering -p 30022:9002 gathering
    > docker run -itd —name zuul —hostname zuul -p 30021:10020 zuul
    如果遇到了
    docker部署微服务项目 - 图24
    这种情况,关闭防火墙重启docker
    更改完了之后
    >docker ps
    docker部署微服务项目 - 图25
    查看对应的容器是否启动以及对应的端口
    docker部署微服务项目 - 图26
    随后使用浏览器访问:
    10.0.0.220:30020
    docker部署微服务项目 - 图27
    查看这三个组件是否成功启动
    成功后再访问10.0.0.220:80
    docker部署微服务项目 - 图28
    默认账户:admin
    密码:123456
    登录成功则部署成功,想看内容就多刷新一下