用到的环境:
docker 、nacos、compose、harbor(自行安装 ,以下连接作为参考)
nacos:史上最全整合nacos单机模式整合哈哈哈哈哈_nacos 源码启动 单机模式-CSDN博客
docker、compose、harbor:史上最全的整合Harbor安装教程,哈哈哈哈_harbor 安装-CSDN博客
1.在maven的settings.xml文件中配置harbor服务的账号信息:
<server>
<id>harbor</id>
<username>admin</username>
<password>Harbor12345</password>
<configuration>
<email>123456@aliyun.com</email>
</configuration>
</server>
2.pom.xml文件添加docker插件
插件原理:就是在docker主机上构建docker对应的镜像,然后将构建的镜像推送到harbor远程仓库中。
<properties>
<docker.repostory>192.168.X.XXX:端口号</docker.repostory>
<docker.registry.name>自己起个名字(spx)</docker.registry.name>
</properties>
<build>
<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.2.2</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase(阶段)上。也就是说,用户只需执行mvn package,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<serverId>harbor</serverId>
<registryUrl>http://${docker.repostory}</registryUrl>
<dockerHost>http://192.168.X.XXX:2375</dockerHost> <!-- 配置docker主机地址 -->
<!--指定生成的镜像名-->
<imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName>
<!-- 指定 dockerfile 路径-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!-- 是否跳过docker构建 -->
<skipDockerBuild>false</skipDockerBuild>
</configuration>
</plugin>
</plugins>
</build>
docker服务端开启远程访问、
3.#修改该文件
vim /lib/systemd/system/docker.service
#找到ExecStart行,修改成如下内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
#重启守护进程
systemctl daemon-reload
#重启docker
systemctl restart docker
注意:关闭防火墙[]
systemctl stop firewalld.service
编写dockerfile文件
-
Dockerfile文件的位置必须是和pom.xml处于同一个目录
-
FROM centos7-jdk17 MAINTAINER atggu(随意) EXPOSE 8088(端口号写自己的) ADD target/service-user-1.0-SNAPSHOT.jar /service-user-1.0-SNAPSHOT.jar WORKDIR / ENTRYPOINT ["java" , "-jar" , "service-user-1.0-SNAPSHOT.jar"]
4.使用dockerfile来构建一个包含Jdk17的centos7镜像(前提下载好JDK17在这里就不说了,自己自行下载)
分析:
1)、基础的镜像的应该选择centos:7
2)、在自己所构建的镜像中需要包含Jdk17,就需要把Jdk17添加到centos:7的基础镜像中
3)、为了方便的去使用自己构建的镜像中的Jdk17,就需要去配置环境变量
4)、因为Jdk17仅仅是一个开发工具,并不是一个服务进程,因此在启动容器的时候可以不指定任何的执行命令
实现步骤:(具体执行结果不展示了,按步骤走就对了,如果自己的环境有什么问题,操作过程遇到问题,随时度~~)
1)、将Jdk17的安装包上传到linux服务器的指定目录下
2)、在Jdk17所在的目录下创建一个dockerfile文件
3)、使用docker build命令构建镜像
4)、使用docker images查看镜像构建情况
# 1、创建目录
mkdir –p /usr/local/dockerfilejdk17
cd /usr/local/dockerfilejdk17
# 2、下载jdk-17_linux-x64_bin.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerfilejdk17目录
# 3、在/usr/local/dockerfilejdk17目录下创建dockerfile文件,文件内容如下:
vim dockerfile
FROM centos:7
MAINTAINER atguigu
RUN mkdir -p /usr/local/java
ADD jdk-17_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.7
ENV PATH=$PATH:$JAVA_HOME/bin
# 4、执行命令构建镜像;不要忘了后面的那个 .
docker build -t centos7-jdk17 .
# 5、查看镜像是否建立完成
docker images
执行maven的打包命令(各种环境配置好后去执行打包)
将application-dev.yml文件中的内容复制到nacos的service-user-dev.yml配置中:
server:
port: 8088
spring:
application:
name: service-user
cloud:
nacos:
discovery:
server-addr: 192.168.X.XXX:8848
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.X.XXX:3306/db_spzx?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=true
username: root
password: 1234
data:
redis:
host: 192.168.X.XXX
port: 6379
mybatis:
config-location: classpath:mybatis-config.xml
mapper-locations: classpath:mapper/*/*.xml
修改IDEA中要推送的项目中的application.yml文件的内容如下所示:
spring:
cloud:
nacos:
config:
server-addr: 192.168.X.XXX:8848
config:
import:
- nacos:service-user-dev.yml #(NACOS中的Data Id)
一切就绪准备打包推送
5.在父工程目录下面执行命令(如下我就去D://gitSoure/spzx-parent中cmd打开)
mvn clean package -DskipTests # 打包跳过测试
mvn clean package -DskipTests -DskipdockerBuild # 打包跳过测试的同时提高构建
来看
完美结束!
当然还可以命令用docker推送:
先尝试用docker登录Harbor 提示成功,再去执行命令(登录过程中如遇失败,度娘去查,一般是Harbor自身环境配置有问题)
推送成功 !会一种就可以,下边的就不详细些了,估计大家也看累了,辛苦了