springboot maven项目进行docker打包部署

docker进行springboot 项目打包部署流程

前置条件

配置docker 或者 远程docker,开启2735远程访问
安装docker-compose:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

步骤

  1. 创建目录 /src/main/docker
  2. /src/main/docker目录下创建文件run.sh

#!/bin/sh

java -Xms2048m -Xmx2048m -Dfile.encoding="UTF-8" -Dspring.config.additional-location=/zxapp/conf/  -jar /zxapp/@project.build.finalName@.jar

  1. /src/main/docker目录下创建文件Dockfile
FROM openjdk:8-jdk-alpine
RUN apk add netcat-openbsd              \
    && mkdir -p /usr/local/rongjia      \
    && mkdir -p /data/rongjia/cert      \
    && mkdir -p /data/xrebel            \
    && apk add --no-cache tzdata        \
    && echo "Asia/Shanghai" > /etc/timezone \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ADD @project.build.finalName@.jar /zxapp/
ADD run.sh run.sh
RUN sed -i 's/\r//g' run.sh \
    && chmod +x run.sh
CMD ./run.sh
  1. 修改pom.xml 添加插件maven-resources-plugindocker-maven-plugin,修改部分配置项
    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${basedir}/target/docker</outputDirectory>
                    <resources>
                        <!-- copy dockerfile 并替换@@变量-->
                        <resource>
                            <directory>src/main/docker</directory>
                            <filtering>true</filtering>
                        </resource> 
                    </resources>
                    <includeEmptyDirs>true</includeEmptyDirs>
                </configuration>
            </execution>
        </executions>
    </plugin> 
    <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>1.2.2</version> 
        <executions>
            <execution>
                <id>build-image</id>
                <phase>package</phase>
                <goals>
                    <goal>build</goal>
                </goals>
            </execution> 
            <!-- tag 和 push -->
<!--                    <execution>-->
<!--                        <id>tag-image</id>-->
<!--                        <phase>package</phase>-->
<!--                        <goals>-->
<!--                            <goal>tag</goal>-->
<!--                        </goals>-->
<!--                        <configuration>-->
<!--                            <image>${project.artifactId}:${project.version}</image>-->
<!--                            <newName>docker.tag.zx/${project.artifactId}:${project.version}</newName>-->
<!--                        </configuration>-->
<!--                    </execution>-->
<!--                    <execution>-->
<!--                        <id>push-image</id>-->
<!--                        <phase>deploy</phase>-->
<!--                        <goals>-->
<!--                            <goal>push</goal>-->
<!--                        </goals>-->
<!--                        <configuration>-->
<!--                            <imageName>docker.tag.zx/${project.artifactId}:${project.version}</imageName>-->
<!--                        </configuration>-->
<!--                    </execution>-->
        </executions> 
        <configuration> 
            <!-- 如果是本地docker 不需要配置这个 -->
            <dockerHost>http://192.168.0.140:2375</dockerHost> 
            <imageName>${project.artifactId}:${project.version}</imageName>
            <dockerDirectory>${basedir}/target/docker</dockerDirectory>  
            <!--                    对应setting.xml 中server账号密码-->
            <!--                    <serverId>${docker.serverId}</serverId> --> 
            <resources>
                <resource>
                    <targetPath>/</targetPath>
                    <directory>${project.build.directory}</directory>
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
        </configuration>

    </plugin>

  1. docker-compose,服务端建议统一network,创建network命令docker network create app_env
    version: '3'
    services:
        hbwsdj_thirdparty:  # 修改
            image: hbwsdj_thirdparty:1.0-SNAPSHOT # 修改
            container_name: hbwsdj_thirdparty 
            restart: always
            volumes:
            - ./logs:/logs
            - ./config:/zxapp/conf
            ports:
            - "8010:8010"
    networks:
        # 默认使用外部网桥 app_env
        default:
            external:
                name: "app_env"
  1. 部署服务器目录
|--hbwsdj_thirdparty/
|----config/
|--------application.properties
|----hbwsdj_data_compare-1.0-SNAPSHOT.jar
|----logs/

  1. 相关命令
    mvn clean package
    
    docker-compose up -d
    docker-compose down
    docker-compose stop
    docker-compose start
    docker-compose logs -f
    docker exec -it  containter /bin/sh
    

欢迎咨询QQ164774326

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值