Skip to main content

可视化部署说明

将已经准备好的Hyper-V虚拟机导入

本步骤不做特殊说明,按提示操作即可

本虚拟机中安装了 docker 服务及常用的 image 并配置了开机启动; 安装了基本的常用工具: vim screen wget curl lrzsz

已安装的 docker 镜像


REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              8.5.50-jdk8         6fa48e047721        3 days ago          507MB
tomcat              8.5.50-jdk11        f425297f8aa7        3 days ago          624MB
rabbitmq            3.8.1               843e6712e712        6 weeks ago         150MB
openjdk             11                  a7e47afa852b        8 weeks ago         605MB
mysql               5.7.28              cd3ed0dfff7e        2 months ago        437MB
nginx               1.16.1              b50b08c36b60        2 months ago        126MB
openjdk             8                   e8d00769c8a8        3 months ago        488MB
ansible/ansible     centos7             0731001e75a9        2 years ago         669MB

配置虚拟机系统

虚拟机开机之后默认的 IP10.44.111.123 子网掩码为 255.255.255.0 ( 24 ) 网关为 10.44.111.1

需要将以上网络配置为当前网络的信息,以下为操作步骤

  • 启动虚拟机并连接虚拟机
  • 输入用户名/密码: develop / develop
  • 配置网络文件,默认的网卡为 eth0
    [develop@adsl-172-10-0-101 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
    # 如需要输入密码,请按第二步密码输入
    
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="none"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="eth0"
    UUID="d4c2b640-0314-44ff-83f6-9926d49fefe1"
    DEVICE="eth0"
    ONBOOT="yes"
    IPADDR="10.44.111.123"
    PREFIX="24"
    GATEWAY="10.44.111.1"
    DNS1="180.76.76.76"
    IPV6_PRIVACY="no"
    
    # 通常情况下需要修改IP, 子网掩码, 网关; 分别为: IPADDR PREFIX GATEWAY
    # 修改完成之后按 Shift + :   --->   wq   ---> Enter
    
  • 重启网络服务
    # 重启网络服务
    sudo systemctl restart network
    # 查看ip
    ip a
    

说明

用户名 密码
root 2019@eagle
develop develop

nginx-html-path: /home/develop/html/

关键字 以下使用的 $PWD 均为当前目录, 也就是: /home/develop

部署 nginx 前端服务

网络配置完成之后即可通过 ssh 方式连接虚拟机,并把程序上传至虚拟机服务器中;以下使用 XShell 工具操作

  • 运行 docker 中的 nginx 镜像
    docker run -id -v $PWD/html:/usr/share/nginx/html --name nginx -p 80:80 --restart=always nginx:1.16.1
    # -id 创建一个以交互模式运行容器,后台运行
    # -v 绑定数据卷,这里将nginx中页面挂载到当前目录的 html 中;也可以将配置目录和文件(/etc/nginx/nginx.conf)、日志目录(/var/log/nginx/) 挂载到宿主机上
    # --name nginx 为容器指定一个名称
    # -p 指定端口映射
    # --restart=always 开机启动
    
  • 配置防火墙
    [develop@adsl-172-10-0-101 ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    [develop@adsl-172-10-0-101 ~]$ sudo firewall-cmd --reload
    # 重启 `nginx` 容器
    [develop@adsl-172-10-0-101 ~]$ docker container restart nginx
    
  • 修改所属用户或用户组
    [develop@adsl-172-10-0-101 ~]$ sudo chown develop:develop $PWD/html
    
  • 添加测试文件
    [develop@adsl-172-10-0-101 ~]$ touch $PWD/html/index.html
    
  • 测试
    [develop@adsl-172-10-0-101 ~]$ wget 127.0.0.1
    --2019-12-17 15:47:06--  http://127.0.0.1/
    正在连接 127.0.0.1:80... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:0 [text/html]
    正在保存至: “index.html”
    
        [ <=>                                                                                                      ] 0           --.-K/s 用时 0s      
    
    2019-12-17 15:47:06 (0.00 B/s) - 已保存 “index.html” [0/0])
    
    [develop@adsl-172-10-0-101 ~]$ 
    # 表示成功
    
  • 部署程序 将程序代码 display-page.zip 拷贝到 $PWD/html 目录中并解压
    [develop@adsl-172-10-0-101 ~]$ mv display-page.zip $PWD/html
    [develop@adsl-172-10-0-101 ~]$ cd $PWD/html && unzip display-page.zip
    

部署 mysql 数据库服务

  • 运行 docker 中的 mysql 镜像
    docker run -id --restart=always -e MYSQL_ROOT_PASSWORD=2019@eagle --name mysql -v /mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -p 3306:3306 mysql:5.7.28
    # -e 设置环境变量 mysql密码为 2019@eagle
    
  • 配置防火墙
    [develop@adsl-172-10-0-101 ~]$ sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
    [develop@adsl-172-10-0-101 ~]$ sudo firewall-cmd --reload
    # 重启 `mysql` 容器
    [develop@adsl-172-10-0-101 ~]$ docker container restart mysql
    
  • 测试 mysql 连接

netstat -ntulp | grep 80 netstat -ntplu | grep docker