• Docker-compose部署java项目


    Docker-compose部署java项目

    前置条件:

    1. 安装docker
    2. 安装docker-compose
    3. 防火墙啥的都设置好

    dockerfile-demo

    FROM java:8
    VOLUME /tmp
    WORKDIR /
    ADD ./project-demo-1.0.0.jar project-demo.jar
    RUN bash -c 'touch /project-demo.jar'
    EXPOSE 8080
    ENTRYPOINT ["java","-jar","/project-demo.jar"]
    

    compose-project-demo.yaml

    version: '3'
    
    # 关于网络,如果用到mysql或者redis,并且希望在同一个网络,那么就可以直接使用同一个网络名
    # docker network create project-demo_bridge
    networks:
      project-demo_bridge:
        driver: bridge
    
    services:
       project-demo:
         container_name: project-demo
         image: project-demo:1.0
         restart: always
         volumes:
           # 同步时间
           - /etc/localtime:/etc/localtime:ro
           # 如果项目有些日志或者写文件,需要同步到宿主机器,也需要定义相应的卷
           - ./data:/etc/project-demo/data
           - ./log:/etc/project-demo/log
         ports:
           - 8080:8080
         networks:
           - project-demo_bridge
    
    

    start-project-demo.sh

    #! /usr/bin/bash
    PROJECT_NAME=project-demo
    containerName=$PROJECT_NAME:1.0
    imagesName=$PROJECT_NAME:1.0
    
    # 定义一个名称变量
    network_name="$PROJECT_NAME_bridge"
    
    filterName=`docker network ls | grep $network_name | awk '{ print $2 }'`
    
    if [ "$filterName" == "" ]; then
        # 不存在就创建
        docker network create $network_name
        echo "Created network $network_name success!!"
    fi
    
    existContainer=`docker inspect --format '{{.State.Running}}' ${containerName}`
    
    function delExistImagesAndContainer() {
        if [ "${existContainer}" == "true" ]; then
            docker stop ${containerName}
            echo "容器:${containerName}已停止"
            docker rm ${containerName}
            echo "容器:${containerName}已删除"
    
            docker rmi ${imagesName}
            echo "镜像:${containerName}已删除"
        fi
    }
    
    function buildJar(){
        echo "正在构建jar镜像"
        # 其实这个构建指令是可以直接写到compose的那个启动文件中的
        docker build -f dockerfile-$PROJECT_NAME -t $PROJECT_NAME:1.0 .
        echo "镜像构建完成"
        echo "正在创建并启动容器"
        docker-compose -f ./compose-$PROJECT_NAME.yaml up -d
    }
    
    delExistImagesAndContainer
    
    buildJar
    
  • 相关阅读:
    net下开发COM+组件(一)
    C#中自定义属性的例子
    textBox的readonly=true
    关于ADO.Net的数据库连接池
    CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值(十四)
    CYQ.Data 轻量数据层之路 SQLHelper 回头太难(八)
    CYQ.Data 轻量数据层之路 MDataTable 绑定性能优化之章(十一)
    C# 浅拷贝与深拷贝区别 解惑篇
    C#中的 ref 传进出的到底是什么 解惑篇
    CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六)
  • 原文地址:https://www.cnblogs.com/jockming/p/13336861.html
Copyright © 2020-2023  润新知