主要是使用Maven插件自动部署。
一、配置maven环境
(1)环境变量配置
略
(2)阿里云服务器配置
主要是为了把项目推动到阿里云
找到maven配置文件settings.xml中的【servers】,添加如下:
username是阿里云的登录用户
password是镜像注册密码,不是登录密码哦,在阿里云注册的时候回有相应的提示如下:
二、修改宿主机docker配置
(1)修改宿主机的docker配置,让其docker服务可以远程访问, 暴露的docker服务端口号 2375
vim /lib/systemd/system/docker.service
(2)在ExecStart后面添加入下代码
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
(3)刷新配置
systemctl daemon-reload
systemctl restart docker
访问链接进行验证是否成功:http://192.168.197.140:2375/version
三、部署项目
(1)登录阿里云中的镜像服务,创建仓库
(2)修改项目pom
【重点说明】
<build>
<finalName>content-question-n001</finalName>
<plugins>
<!-- 插件一定要在其他构建插件之上,否则打包文件会有问题。 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--生成镜像相关配置-->
<configuration>
<!-- 将forceTags设为true,这样就会覆盖构建相同标签的镜像 -->
<forceTags>true</forceTags>
<!-- 远程 docker 宿主机地址, 端口号是/lib/systemd/system/docker.service所暴露的端口号, 生成镜像到docker中 -->
<dockerHost>http://192.168.197.140:2375</dockerHost>
<!--内容是之前修改的maven的settings.xml配置文件中,server节点的id-->
<serverId>docker-aliyun</serverId>
<!-- 镜像名:阿里云镜像仓库地址
${project.artifactId}引用当前工程名,
${project.version}引用当前工程版本号
-->
<imageName>registry.cn-shenzhen.aliyuncs.com/xxx(命名空间)/${project.artifactId}:${project.version}</imageName>
<!--基础镜像-->
<baseImage>java</baseImage>
<!--类似于Dockerfile的ENTRYPOINT指令-->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource> <!-- 指定打包的资源文件 -->
<targetPath>/</targetPath> <!-- 指定要复制的目录路径,这里是当前目录 -->
<directory>${project.build.directory}</directory> <!-- 指定要复制的根目录,这里是target目录 -->
<include>${project.build.finalName}.jar</include> <!-- 这里指定最后生成的jar包 -->
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
(3)在项目根目录执行cmd命令
mvn clean package docker:build -DpushImage
【说明】
mvn clean package 打包成jar
docker:build 构建成镜像
-DpushImage 推送到仓库
推送成功如下所示:
(4)启动容器(项目)
如果推送阿里云成功,则看到如下镜像
docker images
启动容器:
交互式容器
docker run -it --name=content-qeusiton-n001 -p 8086:8086 0d3b02fdd481 /bin/bash
守护式容器
docker run -id --name=content-qeusiton-n001 -p 8086:8086 0d3b02fdd481