Dockerfile+Swarm部署腾讯云课堂

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

图片[1]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

注意

本文镜像已经上传,可以使用docker pull拉取!

docker pull chaiquan/txkt:latest

准备工作

创建两个节点分别为master和node节点:

IP地址主机名节点
192.168.100.100mastermaster节点
192.168.100.101nodenode节点

加入集群

关闭防火墙和selinux

master和node节点修改/etc/hosts 文件:

vim /etc/hosts

关闭防火墙

systemctl disable firewalld;systemctl stop firewalld

更改改/etc/selinux/config文件

vim /etc/selinux/config

图片[2]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

编写重要文件

我们新建kt文件夹

mkdir kt

将所有需要的文件移动到这个文件夹

图片[3]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

在kt里新建Dockerfile文件

#基础镜像这里我选择centos7.6.1810
FROM centos:7
#使用一个yum包 ADD和COPY差不多就是多了个功能,ADD可以将压缩包自动解压
ADD mall-swarm.tar.gz /opt
#删除yum.repos.d里的yum源 
RUN rm -rf /etc/yum.repos.d/*
ADD local.repo /etc/yum.repos.d/
#安装mariadb 清空源
RUN yum install -y mariadb-server && yum clean all
ADD jdk-8u144-linux-x64.tar.gz /usr/local
#JDK环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_144
ENV CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
ENV PATH=$PATH:$JAVA_HOME/bin
ADD apache-tomcat-7.0.56.tar.gz /opt
COPY ROOT.war /opt/apache-tomcat-7.0.56/webapps/
COPY course.sql run.sh /opt/
# 给脚本权限并且执行
RUN chmod +x /opt/run.sh && source /opt/run.sh
ENV LC_ALL en_US.UTF8
RUN rm -rf /opt/apache-tomcat-7.0.56/webapps/ROOT \
    && cd /opt/apache-tomcat-7.0.56/bin/ && bash shutdown.sh \
    && cd /opt/apache-tomcat-7.0.56/bin/ && bash startup.sh \
    && rm -rf /opt/mall-swarm
EXPOSE 3306 8080
CMD ["mysqld_safe"]

在kt文件夹里编写local.repo文件

[local]
name = local
baseurl = file:///opt/mall-swarm/mall-repo
gpgcheck = 0
enabled = 1

在kt文件夹里编写run.sh文件

#!/bin/bash
mysql_install_db --user=mysql
(mysqld_safe&) | grep a
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 course;use course;source /opt/course.sql; "
sleep 3s

当我们这些文件编写完成后,我们可以使用build构建镜像!

检查

注意检查以下文件:

  • apache-tomcat-7.0.56.tar.gz
  • course.sql
  • Dockerfile
  • jdk-8u144-linux-x64.tar.gz
  • local.repo
  • mall-swarm.tar.gz
  • ROOT.war
  • run.sh

图片[4]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

构建镜像

确认无误后,使用 docker build 构建镜像

docker build -t 镜像名 .
docker build -t chaiquan/txkt .

图片[5]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

这是我构建的镜像,后续会上传到dockerhub

使用docker run 检查镜像是否可以使用

docker run -itd -p 80:8080 --name kt --rm chaiquan/txkt

图片[6]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

进入容器

docker exec -it kt /bin/bash

进入数据库查看一下,是否有数据库和表

mysql -uroot -p123456

图片[7]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

show databases;

图片[8]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

use course;
show tables;

图片[9]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

进入/opt/apache-tomcat-7.0.56/bin使用启动脚本

cd /opt/apache-tomcat-7.0.56/bin
./shutdown.sh
./startup.sh

由于我在前面给的80:8080端口所以直接使用ip访问

图片[10]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

可以访问,那么我们使用swarm集群来部署它!

我们先打包一下镜像,好让另一台主机拥有这个镜像;

docker save -o 文件名.war 镜像
docker save -o chaiquan.war chaiquan/txkt
scp 文件名.war root@另一台ip:/root/
scp chaiquan.war root@192.168.145.101:/root/

图片[11]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

node1节点解压

docker load -i chaiquan.war

图片[12]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

图片[13]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

这样就不用重新拉镜像了

master节点,使用 docker service 命令创建服务:

docker service create --replicas 1 --name xyh_kt -p 80:8080 chaiquan/txkt

图片[14]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

扩展服务:

docker service scale xyh_kt=2

图片[15]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

查看节点:

docker service ps xyh_kt

图片[16]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

进入容器

docker exec -it 容器

执行tomcat/bin文件夹中的启动脚本

cd /opt/apache-tomcat-7.0.56/bin/
./startup.sh

稍等片刻,浏览器访问两个节点的ip都能显示:

图片[17]-Dockerfile+Swarm部署腾讯云课堂-剧毒之触博客

镜像已经上传DocKerHub

docker pull chaiquan/txkt:latest
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论