Docker持续集成部署分布式环境搭建

  • 1. 安装java环境
  • 2. 安装数据库MYSQL
  • 3. 安装Docker
  • 3.1 Docker常用命令
  • 3.2 Docker 自定义镜像
  • 3.3 Docker 守护进程运行
  • 3.4 为Docker 设置数据卷
  • 3.5 Docker-Compose工具(更好用的命令工具)
  • 安装Docker compose
  • 3.6 Docker-compose 启动springboot项目
  • 3.7 使用网桥实现跨主机docker通信
  • 4. 自动化部署
  • 4.1 Git 配置免密登陆
  • 配置内容如下


1. 安装java环境

  1. 下载java linux安装包jdk-8u201-linux-x64.tar.gz
  2. 在linux下创建soft 文件夹,移动到改文件夹
  3. tar -xzvf jdk-8u201-linux-x64.tar.gz 解压
  4. mkdir /usr/local/java 创建文件夹
  5. mv jdk1.8.0_201//usr/local/java 移动到java文件夹下
  6. vi /etc/environment配置系统环境变量
  7. export JAVA_HOME=/usr/local/java/jdk1.8.0_201
    export PATH=docker moby交叉编译_分布式PATH
    export CLASSPATH=.:docker moby交叉编译_docker-compose_02JAVA_HOME/lib/tools.jar
  8. 配置用户变量 vi /etc/profile
    在两段代码直接配置第7点的代码
  9. 使之环境生效 source /etc/profile

2. 安装数据库MYSQL

  1. apt-get install mysql-server
  2. whereis mysql (查找mysql安装的路径)
  3. cd /etc/mysql/mysql.conf.d
  4. vi mysqld.cnf 打开mysql配置环境
  5. 注释掉bind-address 或者配置改成 0.0.0.0(所有人都能访问到)
  6. service mysql restart 重启mysql
  7. mysql -u root -p 登陆mysql
  8. 授权root用户允许所有人连接
    grant all privileges on . to root@% identified by ‘你的mysql root的账号密码’;

3. 安装Docker

1.使用脚本自动安装
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh -mirror Aliyun

  1. 通过docker -version 查看是否安装成功
  2. 配置国内代理镜像,加快下载速度(可不配置) 在/etc/docker/daemon.json中写入如下内容
2.  {
 “registry-mirrors”:[“https://registry.docker-cn.com”]
 }或者
 {
 “registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn”]
 }
 4.重启服务
 sudo systemctl daemon-reload
 sudo systemctl restart docker5.拉取 tomcat9的镜像 (docker pull ip:port/tomcat:jre-9)
 docker pull tomcat 安装tomcat
 docker pull tomcat:9-jre8 升级tomcat9
3-5步可省略
  1. 查看安装的镜像
    docker imagers
    7.运行镜像
    docker run -p 8080:8080 tomcat (开启tomcat 8080端口)

3.1 Docker常用命令

  1. docker image ls 列出安装的镜像
  2. docker run -it --rm \ (回车) (-it 表示以交互式方式允许容器,–rm表示退出容器就立即删除这个容器new出来的本身对象)
  3. ubuntu:16.04 \ (回车)
  4. bash (回车) 允许bash这个程序
    (1) 查看系统信息 cat /etc/os-release
  5. exit 或 按Ctrl+d 退出容器
  6. docker images rm ID(镜像ID) 删除容器
  7. docker rmi 删镜像
    (1)docker run -it 镜像ID bash 交互式地运行镜像
    (2)docker exec -it 镜像ID
    bash 交互式地进行镜像里面

3.2 Docker 自定义镜像

1.编写Dockerfile脚本 (以下举例tomcat为例子)

编写Dockfile文件
FROM tomcat  (基于tomcat的镜像,继承)
WORKDIR /usr/local/tomcat/webapps/ROOT/  (切换到这个工作路径)
RUN rm -fr *
RUN echo “hello docker”> /usr/local/tomcat/webapps/ROOT/index.html

2.构建镜像命令

docker build -t myshop(名称) .(标签 点表示当前目录)

3.3 Docker 守护进程运行

-d 以守护态运行

docker run -p 8080:8080 -d tomcat

3.4 为Docker 设置数据卷

-v 数据卷 :/usr/local/docker/tomcat/ROOT
宿主机路径:/usr/local/docker/tomcat/webapps/ROOT tomcat 容器路径

docker run -p 8080:8080 –name tomcat -d -v
/usr/local/docker/tomcat/ROOT: /usr/local/docker/tomcat/webapps/ROOT tomcat

3.5 Docker-Compose工具(更好用的命令工具)

安装Docker compose

1.使用如下命令安装

sudo curl -L
"https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 如果下载速度慢,可改用如下地址安装
    sudo curl -L “https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker- compose-docker moby交叉编译_docker-compose_03(uname -m)” -o /usr/local/bin/docker-compose

2.添加权限

sudo chmod +x /usr/local/bin/docker-compose
  1. docker-compose 运行
    (1)当前目录下先配置docker-compose.yml配置文件
    (2) 以守护态运行容器 docker-compose up -d
    停止容器运行 docker-compose down

3.6 Docker-compose 启动springboot项目

[参考]( 1.创建Dockerfile文件内容如下

FROM java:8
MAINTAINER 70kg 449246146@qq.com
VOLUME /tmp ADD mystory-1.0.0-SNAPSHOT.jar app.jar RUN bash -c 'touch /app.jar'
ENTRYPOINT
["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

介绍一下:

FROM :表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载

MAINTAINER :指定维护者的信息
·
VOLUME :VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
·
ADD :拷贝文件并且重命名(前面是上传jar包的名字,后面是重命名)
·
RUN :每条run指令在当前基础镜像执行,并且提交新镜像
·
ENTRYPOINT :为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

2.将创建好的Dockerfile文件和jar包上传到服务器,放在同一文件夹下,进入jar包所在文件夹,执行命
注意:后面末尾有一个空格和一个“.”,mystory是创建的镜像的名字,“.”表示当前目录
docker build -t mystory .

docker moby交叉编译_docker-compose_04

3.7 使用网桥实现跨主机docker通信

docker moby交叉编译_持续集成部署分布式系统_05


2.

docker moby交叉编译_分布式_06


3.

docker moby交叉编译_docker moby交叉编译_07

docker moby交叉编译_docker moby交叉编译_08


docker moby交叉编译_docker moby交叉编译_09


docker moby交叉编译_docker-compose_10

docker moby交叉编译_集成部署_11

4. 自动化部署

4.1 Git 配置免密登陆

使用git工具

Ssh-keygen -t rsa -C “账号”
  1. 在linux服务器上安装git工具 apt-get install git 安装
  2. 查看版本 git version
  3. 配置免密登陆账号
    ssh-keygen -t rsa -C xxxxxx@qq.com
  4. docker moby交叉编译_docker moby交叉编译_12

  5. 进入ssh的目录 cd /home/ubuntu/.ssh

vi id_rsa.pub 复杂公钥

配置到gitlab 的SSH中

docker moby交叉编译_分布式_13

  1. 拉取源代码 git clone

git clone git@gitlab.com:wx2019/dependences.git

  1. 创建本地maven
    cd /usr/local
    mkdir maven
  2. 把本地maven 仓库上传到远程 这个maven文件夹
  3. 解压 tar -xzvf 压缩包名
  4. vi /etc/profile
    配置maven环境变量和java环境变量(如果没有配置)

配置内容如下

export
MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4

export
JAVA_HOME=/usr/local/ jdk-8u201-linux-x64

export
JRE_HOME=/usr/local/ jdk-8u201-linux-x64/jre

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin
  1. source /etc/profile 生效
  2. 查看 java -version
    Mvn -v
  3. 打包

进入项目路径

mvn clean package -Dmaven.test.skip=true

如果没有配置项目的setting目录,则去到
Maven目录的conf的配置文件查看

cd .m2/repository

docker moby交叉编译_持续集成部署分布式系统_14