使用DockerCompose完成项目发布

Shell脚本+DockerCompose发布项目

  • 项目(Dockefile)->git->Shell拉取->打包->执行 docker-compose up -d

  • Docker-compose

    • java程序

    • Mysql

    • Redis

 思路分析:

1.推送远程仓库 gitee.cn

2.CentOS

  1)检查本地是否有相关镜像和容器,如果有,直接删掉 如果容器ID不为空,删除容器:docker rm -f 容器名字 删除镜像:docker rmi 镜像名

  2)制作镜像-DockerCompose

    A:MySQL、Redis 安装一次[检查是否已安装,没安装,才安全MySQL,同理:Redis]         a.判断MySQL和Redis容器是否存在

        b.如果不存在,则创建,存在就不需要处理

     B:构建苍穹外卖镜像 Dockerfile

        a.构建苍穹外卖镜像

        b.创建实例

其他案例参考脚本:

#!/bin/bash

function rmi_fk()

{

   if [ -n "$(docker ps -f name=fkc --format '{{.ID}}' )" ]

      then

      #停止容器

      docker stop $(docker ps -f name=fkc --format '{{.ID}}' )

   fi

    if [ -n "$(docker ps -a -f name=fkc --format '{{.ID}}' )" ]

        then

        #删除容器

        docker rm $(docker ps -a -f name=fkc --format '{{.ID}}' )

    fi

    if [ -n "$(docker images fk:1.0 --format '{{.ID}}' )" ]

        then

        #删除之前的镜像

        docker rmi $(docker images fk:1.0 --format '{{.ID}}' )

    fi

}

function build_fk()

{

    cd /usr/local/server/jenkins_projects/jars/fk/target

    cp ../Dockerfile ./

    docker build -t fk:1.0 .

    docker run -it -d --name=fkc -p 38081:38081 fk:1.0

}

rmi_fk

build_fk

DockerCompose不重复创建命令:--no-recreate

参考 

shell脚本:

#!/bin/sh
echo =================================
echo  苍穹外卖自动化部署脚本启动
echo =================================

#项目名称
APP_NAME=sky-take-out
#仓库地址
URL=https://gitee.com/ITdog1/sky-take-out.git

#查看项目进程,并停止
tpid=`ps -ef|grep sky-server|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '停止原来运行中的工程 Stop Process!'
    kill -15 $tpid
fi

sleep 2

#再次确认,查看项目进程,并停止
tpid=`ps -ef|grep sky-server|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '停止原来运行中的工程 Kill Process!'
    kill -9 $tpid
fi

#如果文件夹不存在,就克隆仓库
if [ ! -d "./$APP_NAME" ]; then
    echo '克隆仓库'$URL
    git clone -b test $URL
fi

#删掉苍穹外卖容器
docker rm -f sky-server

#休眠3秒
sleep 3

#删除苍穹外卖镜像
docker rmi docker-compose_sky-server:latest

#休眠3秒
sleep 3

echo 拉取仓库最新代码
cd $APP_NAME

git pull origin test
git checkout test

echo 开始编译项目打包,请耐心等待

mvn clean package -Dmaven.test.skip=true

cd sky-server/target

mv sky-server-1.0-SNAPSHOT.jar /usr/local/docker-compose/sky-server.jar

cd /usr/local/docker-compose

#sudo docker build -t sky-server.jar:1.0 .


docker-compose up -d 

#nohup java -jar sky-server-1.0-SNAPSHOT.jar &> sky.log &
echo '项目启动完成! 后台管理地址 http://ip:8080/doc.html'

 Dockerfile

# 指定基础镜像
FROM openjdk:11-jre

# 拷贝jdk和java项目的包
COPY ./sky-server.jar /tmp/app.jar

# 暴露端口
EXPOSE 8082
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

 Dockercompose脚本:

version: "3.2"

services:
  mysql:
    restart: always
    image: mysql:8.0
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "/usr/local/mysql/log:/var/log/mysql"
      - "/usr/local/mysql/data:/var/lib/mysql"
      - "/usr/local/mysql/conf:/etc/mysql/conf.d"

  redis:
    image: redis:6.2.4
    restart: always
    container_name: redis
    privileged: true
    ports:
      - 6379:6379
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /usr/local/redis/data:/usr/local/redis/data
      - /usr/local/redis/conf/redis.conf:/usr/local/redis/conf/redis.conf
      - /usr/local/redis/logs:/usr/local/redis/logs
    command: ["redis-server","/usr/local/redis/conf/redis.conf"]

  sky-server:
    container_name: sky-server
    build: ./
    ports:
      - "8080:8080"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值