Bootstrap

java打包并部署到云服务器

一 打包之前的检查

可以通过 parent父模块 模块对所有模块进行打包,使用生命周期 package 指令。
打包成功的界面

如果你想安装到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项目时生成的,它们各自有不同的用途:

  1. wms-j3-daycheck-1.0.0-SNAPSHOT.jar:

    • 这是主JAR文件,包含了项目的编译后的类文件和资源文件。它是项目的主要可执行或可依赖的JAR包。

    • SNAPSHOT表示这是一个开发中的版本,可能还未正式发布。

  2. wms-j3-daycheck-1.0.0-SNAPSHOT.jar.original:

    • 这个文件通常是构建工具(如Maven)在构建过程中生成的原始JAR文件的备份。它可能包含了在构建过程中被修改或替换的内容的原始版本。

    • 例如,Maven在构建过程中可能会修改MANIFEST.MF文件或其他元数据,原始文件则保留了这些修改前的内容。

  3. wms-j3-daycheck-1.0.0-SNAPSHOT-javadoc.jar:

    • 这个JAR文件包含了项目的Java文档(Javadoc)。它通常用于提供API文档,方便其他开发者了解和使用这个项目的类和方法。

    • 通过这个JAR文件,开发者可以在IDE中查看详细的API文档,包括类的描述、方法的参数和返回值等。

  4. 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简介和命令 远程访问  安全认证