一 打包之前的检查
如果你想安装到maven仓库中可以使用install指令。
打包前注意检查子模块中,如果是spring-boot项目,是否正确配置了spring-boot-maven插件,配置示
例如下:
```xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定 spring-boot 程序入口类 -->
<mainClass>com.zeroone.star.doc.DocApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
```
二 构建镜像
在模块根目录下面新建Dockerfile文件,内容示例如下:
文档中的内容根据实际情况修改,主要修改第6行中的target目录下面的jar包名称。按实际项目打包后的名字写
# 该镜像需要依赖的基础镜像
FROM openjdk:8
# 指定维护者的名字
MAINTAINER 01star
# 将当前target目录下的jar包复制到docker容器中
ADD target/wms-j3-daycheck-1.0.0-SNAPSHOT.jar app.jar
# 定义JVM参数
ENV JAVA_OPTS="-Xms256m -Xmx256m"
ENV SPRING_ARGS=""
RUN echo "JAVA_OPTS=" $JAVA_OPTS
# 设置容器启动执行指令
CMD java $JAVA_OPTS -jar app.jar --logging.file.path=/tmp/logs/spring-boot $SPRING_ARGS
我的项目的打包
这四个JAR包通常是在构建和发布Java项目时生成的,它们各自有不同的用途:
-
wms-j3-daycheck-1.0.0-SNAPSHOT.jar:
-
这是主JAR文件,包含了项目的编译后的类文件和资源文件。它是项目的主要可执行或可依赖的JAR包。
-
SNAPSHOT
表示这是一个开发中的版本,可能还未正式发布。
-
-
wms-j3-daycheck-1.0.0-SNAPSHOT.jar.original:
-
这个文件通常是构建工具(如Maven)在构建过程中生成的原始JAR文件的备份。它可能包含了在构建过程中被修改或替换的内容的原始版本。
-
例如,Maven在构建过程中可能会修改
MANIFEST.MF
文件或其他元数据,原始文件则保留了这些修改前的内容。
-
-
wms-j3-daycheck-1.0.0-SNAPSHOT-javadoc.jar:
-
这个JAR文件包含了项目的Java文档(Javadoc)。它通常用于提供API文档,方便其他开发者了解和使用这个项目的类和方法。
-
通过这个JAR文件,开发者可以在IDE中查看详细的API文档,包括类的描述、方法的参数和返回值等。
-
-
wms-j3-daycheck-1.0.0-SNAPSHOT-sources.jar:
-
这个JAR文件包含了项目的源代码文件。它通常用于调试和查看项目的实现细节。
-
通过这个JAR文件,开发者可以在IDE中查看和调试项目的源代码,这对于理解和修改项目非常有帮助。
-
总结:
-
主JAR文件用于运行或依赖项目。
-
原始JAR文件是构建过程中的备份。
-
Javadoc JAR文件提供API文档。
-
源代码JAR文件提供源代码,用于调试和查看实现细节。
在当前模块的pom文件中,新增docker-maven插件,示例如下:
具体配置根据时间情况做微调整,主要修改内容:
-
dockerHost:远程管理地址
-
certPath:CA证书位置
-
ports:端口映射
-
JAVA_OPTS:JVM参数
-
SPRING_ARGS:启动替换参数
需要注意,docker需要能够远程访问!!!
Docker 远程管理地址 要配置远程服务器的ip,并且要配置docker远程访问和安全认证,这个可以看本文最后的讲解
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<!-- Docker 远程管理地址 -->
<dockerHost>https://192.168.220.128:2375</dockerHost>
<!-- CA 证书位置 -->
<certPath>/home/docker-ca</certPath>
<images>
<!-- Docker 镜像名称定义 -->
<name>${project.artifactId}:${project.version}</name>
<!-- 指定 Dockerfile 所在目录 -->
<build>
<contextDir>${project.basedir}</contextDir>
</build>
<!-- 别名用于容器命名 -->
<alias>${project.artifactId}</alias>
<!-- 容器 run 相关配置 -->
<run>
<volumes>
<!-- 配置运行时容器命名策略为:别名,如果不指定则默认为 none,即使用 -->
<namingStrategy>alias</namingStrategy>
<!-- 端口映射 -->
<port>
<port>9999:9999</port>
</port>
<!-- 数据卷 -->
</volumes>
<volume>
<bind>
<volume>etc/localtime:/etc/localtime</volume>
</bind>
</volume>
<!-- 设置环境变量 -->
<env>
<!-- JVM 参数 -->
<JAVA_OPTS>-Xms256m -Xmx256m</JAVA_OPTS>
<!-- 启动替换参数 -->
<SPRING_ARGS>
--spring.profiles.active=test
--spring.cloud.nacos.discovery.ip=192.168.220.128
</SPRING_ARGS>
</env>
</run>
</images>
</configuration>
</plugin>
之后的操作在E:\01星球作业\250208大项目/11 java业务服务打包部署教程
Docker远程访问
前提是已经有docker容器。
参考链接:Configure remote access for Docker daemon | Docker Docs
使用下面命令编辑docker服务启动文件
systemctl edit docker.service
添加或修改以下行,替换为您自己的值,ip地址修改成功你自己服务器的ip地址
[Service]
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://xxx:2375 --containerd=/run/containerd/containerd.sock
然后保存文件,执行下面命令重新加载systemctl配置。
systemctl daemon-reload
重启Docker容器
systemctl restart docker
通过查看 netstat 的输出以确认 dockerd 正在侦听配置的端口,以检查更改是否已生效。
netstat -lntp | grep dockerd
开放防火墙端口
# 开放端口
firewall-cmd --add-port 2375/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
安全认证
在E:\BigProject\zero-one-10wms\documents\05、环境搭建\01、Docker\Docker简介和命令 远程访问 安全认证