通过maven 插件自动部署
- Maven 插件 自动部署步骤
1.1 修改宿主机的Docker 配置,让其可以远程访问
vi /lib/systemd/system/docker.service
# 2. 其中 ExecStart= 后添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
1.2 刷新配置重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry
1.3 Pom 增加 配置
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>192.168.220.132:5000/${
project.artifactId}:${
project.version}</imageName>
<!-- <baseImage>openjdk:8-jre</baseImage>-->
<dockerDirectory>src/main/resources/docker</dockerDirectory>
<!-- 切入点自动执行 -->
<!--<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${
project.build.directory}</directory>
<include>${
project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.220.132:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
在 项目/src/main/resource/docker 增加文件Dockerfile
FROM openjdk:8-jre
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
JAVA_OPTS=""
ADD *.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar" ]
EXPOSE 8888
1.4 配置上传
mvn clean install
# 2. 打包上传
mvn docker:build -DpushImage
# 3. 启动镜像
docker run -it --name wang -p 8888:8888 192.168.220.132:5000/wang:1.0-SNAPSHOT
正常启动:
配置2:
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>192.168.220.132:5000/${
project.artifactId}:${
project.version}</imageName>
<baseImage>openjdk:8-jre</baseImage>
<!--<dockerDirectory>src/main/resources/docker</dockerDirectory>-->
<!-- 切入点自动执行 -->
<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${
project.build.directory}</directory>
<include>${
project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.220.132:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
# 2 . 运行配置
# 描述compose 版本信息
version: "3.8"
services:
wang:
image: 192.168.220.132:5000/wang:1.0-SNAPSHOT
container_name: wang
restart: always
ports:
- "8888:8888"
docker 1.4.10
打包报错:需要修改本地 DOCKER_HOST=192.168.220.132:2375 远端Docker 服务器(不行,需要重启电脑)
Dockerfile 和pom 文件同级别
<plugin>
<groupId>com.spotify</groupId>
<!--<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>-->
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<configuration>
<repository>192.168.220.132:5000/${
project.groupId}/${
project.artifactId}</repository>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<password>root</password>
<username>root</username>
<tag>${
project.version}</tag>
<buildArgs>
<dockerHost>http://192.168.220.132:2375</dockerHost>
<JAR_FILE>target/${
project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
<!-- 镜像构建后自动推送 -->
<executions>
<execution>
<id>default</id>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
Dockerfile
FROM openjdk:8-jre
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
JAVA_OPTS=""
ADD target/app.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar" ]
EXPOSE 8888