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
步骤
- 创建目录
/src/main/docker
/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
/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
- 修改pom.xml 添加插件
maven-resources-plugin
和docker-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>
- 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"
- 部署服务器目录
|--hbwsdj_thirdparty/
|----config/
|--------application.properties
|----hbwsdj_data_compare-1.0-SNAPSHOT.jar
|----logs/
- 相关命令
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