centos7自动化docker-compose部署spring-cloud

3 篇文章 0 订阅
1 篇文章 0 订阅
简介

本文介绍的是从0开始部署spring-cloud,而且是使用docker的docker-compose,spring-cloud使用到的注册中心是nacos,基于nacos如果大家还不会,可以先自行去学习,本人也是刚接触不久nacos,也是从官网的git上学习。

前提

本文档涉及的操作,需要在linux上安装mavne,git、docker。前者主要用来在linux上打包项目,而后者git大家都懂,主要是用来拉取最新代码,并且使用maven来打包,打成jar包。基于如何安装maven、git、docker,网上很多手把手教程,我这里就不出教程了。

这里额外引入docker的一些基本命令文档(也是本人编写):传送门

docker-compose安装
git下载二进制文件

从docker-compose的git仓库,选择某个版本的二进制文件下载
https://github.com/docker/compose/releases

在这里插入图片描述

本地下载了之后,把这个上传到linux的目录: /usr/local/bin

更改名字

mv docker-compose-linux-x86_64 docker-compose
之后在任何目录下输入命令查看版本: docker-compose -v

在这里插入图片描述
注意:一定是这个目录,其他目前目前我没试过。

编写拉起代码的sh脚本文件git-run.sh(重点)

在这里插入图片描述

#源码从git上拉取最新的并且maven打包
#项目目录--这个目录记得一定是你的项目代码在linux上的目录
code_path=/root/malan/java/docker/code/spring-cloud-nacos

#分支
branch=master

cd $code_path && git checkout $branch && git pull origin $branch && mvn clean install -DskipTests=true

if [$? -eq 0 ];
then
  echo "maven build success"
else
  echo -e " maven build fail" && exit 1
fi
复制jar包到指定目录(重点)copy.sh
#复制打包好的jar包

usage(){
 echo "Usage: sh copy.sh"
 exit 1
}

#这是代码所在路径
code_path=/root/malan/java/docker/code/spring-cloud-nacos
#docker所在路径(这里其实就是jar包公共路径)
docker_path=/root/malan/java/docker

#复制jar
echo "开始复制 nacos-app.jar"
cp ${code_path}/nacos-app/target/nacos-app.jar ${docker_path}/nacos-app
echo "复制 nacos-app.jar完成"

echo "开始复制 nacos-gateway.jar"
cp ${code_path}/nacos-gateway/target/nacos-gateway.jar ${docker_path}/nacos-gateway
echo "复制 nacos-gateway.jar完成"
docker-compose-yml文件脚本编写(非常重要)

这个文件尤其重要,且看里面的内容:

version: '1.27.4' ## docker的版本,名字固定
services: ##服务,名字固定
  nacos-gateway: # 这个就是gateway网关服务,nacos-gateway为自己定义
    container_name: nacos-gateway # 该服务在容器中的名字
    image: nacos-gateway # 该服务在docker里面的镜像名
    build: #配合下面主要是使用docker-compose build读取的dockerfile文件里面的内容
      context: /root/malan/java/docker/nacos-gateway #dockerfile的路径
      dockerfile: dockerfile
    ports:
      - "7001:7001" #前者7001是docker容器里面的端口后者7001是对外暴露给用户的端口
    environment: #一些环境变量,可以不配置
      - ACTIVE= dev
      - NACOS_URL= 47.99.83.180:8848 
    volumes: #日志挂在牡蛎
      - /root/malan/java/logs:/root/malan/java/logs
    restart: always #服务启动不成功或者挂了,会不断重启
    deploy:
      resources:
        limits:
          memory: 500M
  nacos-app:
    container_name: nacos-app
    image: nacos-app
    build:
      context: /root/malan/java/docker/nacos-app
      dockerfile: dockerfile
    ports:
      - "8001:8001"
    environment:
      - ACTIVE= dev
      - NACOS_URL= 47.99.83.180:8848
    volumes:
      - /root/malan/java/logs:/root/malan/java/logs
    restart: always
    deploy:
      resources:
        limits:
          memory: 500M
dockerfile编写(非常重要)

在这里插入图片描述
dockerfile一般是每个服务都有一个dockerfile,并且跟jar路径保持一致,这里也没说一定保持一致,但是一般给到维护人员能够区分是这个服务的dockerfile,内容如下

FROM centos:7

#作者信息
MAINTAINER sailmalan

ENV TZ=PRC

#在容器启动运行的时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# -p 确保目录名称存在,不存在的就建一个
RUN mkdir -p /root/malan/java

#项目的路径
ENV PROJECT_DIR /root/malan/java

#docker的工作路径
WORKDIR $PROJECT_DIR

#复制jar文件到路径

COPY ./nacos-app.jar /root/malan/java/nacos-app.jar
COPY ./start.sh /root/malan/java/start.sh
COPY ./jdk-8u341-linux-x64.rpm /root/malan/

注意:这里的路径说明:COPY ./nacos-app.jar /root/malan/java/nacos-app.jar
./nacos-app.jar,读取的这个nacos-app.jar文件,路径其实就是上面的docker-compose.yml里面的nacos-app.build.context的路径。

#这里:/root/malan/java/start.sh,有的人不写:/root/malan/java/也可以,但我的不行,我也暂时没有找到原因
RUN chmod 755 /root/malan/java/start.sh

#java的jar运行的jdk环境
RUN rpm -ivh /root/malan/jdk-8u341-linux-x64.rpm && rm -rf /root/malan/jdk-8u341-linux-x64.rpm

#启动脚本
ENTRYPOINT ["/bin/sh","-c","/root/malan/java/start.sh"]

#这里当时有个小坑,就是挂在项目的日志到容器外面的时候,多了个目录,当时设置是这样的:
ENV PROJECT_DIR = /root/malan/java
然后目录就是这样: =/root/malan/java/logs ---->这里是日志挂载的目录,就是因为多了个 = 这样的目录,导致日志挂载不到容器外指定的路径

在看start.sh脚本文件(重点)

在这里插入图片描述

java -Dfile.encoding=utf-8 -jar /root/malan/java/nacos-app.jar
路径:/root/malan/java/就是上面dockerfile里面的ENV PROJECT_DIR路径

最后jdk1.8

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

在这里插入图片描述

接下来看docker-compose命令操作:在如下目录

在这里插入图片描述
1:拉代码,maven打包

执行命令:sh git-run.sh

在这里插入图片描述

maven打包完成

在这里插入图片描述
2:docker-compose build 的构建命令

执行命令 docker-compose build nacos-app
nacos-app就是上面docker-compose.yml里面提到的

在这里插入图片描述

在这里插入图片描述

3:docker-compose up -d 部署命令

执行命令:docker-compose up -d nacos-app
这里的nacos-app就是上面docker-compose.yml里面定义的服务名

在这里插入图片描述

4:接下来看着docker容器里面有没有nacos-app服务

执行命令 docker ps
在这里插入图片描述

5:我的还可以在nacos注册中心看服务是否正常启动(正常启动)

在这里插入图片描述

大工告成!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值