Java项目部署云服务器详细教程

Java项目部署云服务器详细教程

1.首先在模块根目录下(和pom一个路径)新建一个Dockerfile

bash 复制代码
FROM openjdk:8
MAINTAINER heavydrink
ADD target/shp-oauth2-1.0.0-SNAPSHOT.jar app.jar
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

这里需要修改target里面对应的jar包名

2.在父模块pom新增

复制代码
  <!-- 配置 Javadoc 插件,忽略某些警告 -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
          <encoding>UTF-8</encoding>
          <annotationProcessorPaths>
            <path>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
              <version>${lombok.version}</version>
            </path>
            <path>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok-mapstruct-binding</artifactId>
              <version>${lombok-mapstruct-binding.version}</version>
            </path>
            <path>
              <groupId>org.mapstruct</groupId>
              <artifactId>mapstruct-processor</artifactId>
              <version>${org.mapstruct.version}</version>
            </path>
          </annotationProcessorPaths>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven-javadoc-plugin.version}</version>
        <configuration>
          <doclint>none</doclint>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <!-- spring boot maven plugin -->
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>${spring-boot.version}</version>
          <executions>
            <execution>
              <id>repackage</id>
              <goals>
                <goal>repackage</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- docker maven plugin -->
        <plugin>
          <groupId>io.fabric8</groupId>
          <artifactId>docker-maven-plugin</artifactId>
          <version>${docker.maven.plugin.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

3.在当前模块pom中新增插件

复制代码
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.npu.oauth2.Oauth2Application</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <configuration>
                    <!-- Docker 远程管理地址-->
                    <dockerHost>https://xx.xx.xx.xx:2375</dockerHost>
                    <!-- CA 证书位置 -->
                    <certPath>E:\Workspace\docker-ca</certPath>
                    <!-- 镜像设置 -->
                    <images>
                        <image>
                            <!-- Docker 镜像名称定义 -->
                            <name>npu/${project.artifactId}:${project.version}</name>
                            <!-- 指定Dockerfile所在目录 -->
                            <build>
                                <contextDir>${project.basedir}</contextDir>
                            </build>
                            <!-- 别名用于容器命名 -->
                            <alias>${project.artifactId}</alias>
                            <!-- 容器run相关配置 -->
                            <run>
                                <!-- 配置运行时容器命名策略为:别名,如果不指定则默认为none,即使用随机分配名称 -->
                                <namingStrategy>alias</namingStrategy>
                                <!-- 端口映射 -->
                                <ports>
                                    <port>10010:10010</port>
                                </ports>
                                <!-- 数据卷 -->
                                <volumes>
                                    <bind>
                                        <volume>/etc/localtime:/etc/localtime</volume>
                                        <volume>/home/app/${project.artifactId}/logs:/tmp/logs</volume>
                                    </bind>
                                </volumes>
                                <!-- 设置环境变量 -->
                                <env>
                                    <!-- JVM参数 -->
                                    <JAVA_OPTS>-Xms256m -Xmx256m</JAVA_OPTS>
                                    <!-- 启动替换参数 -->
                                    <SPRING_ARGS>
                                        --spring.profiles.active=test --spring.cloud.nacos.discovery.ip=xx.xx.xx.xx
                                    </SPRING_ARGS>
                                </env>
                            </run>
                        </image>
                    </images>
                </configuration>
            </plugin>
        </plugins>
    </build>

注意修改几个点

com.npu.oauth2.Oauth2Application

这里要修改成自己启动类的名字

复制代码
          <dockerHost>https://xx.xx.xx.xx:2375</dockerHost>
          <!-- CA 证书位置 -->
          <certPath>E:\Workspace\huaweiyun-heavydrink-ca</certPath>

这里需要去制作CA证书,具体制作流程请看docker配置TLS那篇文章
10010:10010

端口映射这里需要正确的端口
<SPRING_ARGS>

--spring.profiles.active=test --spring.cloud.nacos.discovery.ip=xx.xx.xx.xx

</SPRING_ARGS>

这里要修改properties要启用的是哪个,这里我用的是test

后面这个ip就填写你要部署上去的云服务器的ip

4.打包

项目根模块执行maven clean 和package操作

然后去当前模块里plugins找到docker这个选项,点击里面的build就可以制作镜像到服务器了

5.运行

可以在云服务器编写脚本

这里给出一个示例脚本

复制代码
# bin/bash
app_name='shp-gateway'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -p 10001:10001 --name ${app_name} \
-v /etc/localtime:/etc/localtime \
-v /home/app/${app_name}/logs:/tmp/logs \
-e JAVA_OPTS="-Xms256m -Xmx256m" \
-e SPRING_ARGS="--spring.profiles.active=test --spring.cloud.nacos.discovery.ip=xx.xx.xx.xx" \
-d npu/${app_name}:1.0.0-SNAPSHOT
echo '----start container----'

这里要修改app_name,对应端口,profile环境,以及最后的ip

最后运行自己的脚本 bash xx.sh就可以了

相关推荐
水天需01031 分钟前
ps 命令全面详解
linux·服务器·网络
milanyangbo31 分钟前
深入解析 Disruptor:从RingBuffer到缓存行填充的底层魔法
java·数据库·后端·架构
yaoxin52112331 分钟前
266. Java 集合 - ArrayList vs LinkedList 内存使用深度剖析
java·开发语言
Lethehong32 分钟前
算力新标杆:昇腾Atlas 800T NPU实战Llama-2-7b全流程评测与技术解析
运维·服务器·数据库·llama-2-7b·昇腾atlas 800t
wanhengidc35 分钟前
云手机中都运用到了哪些技术
运维·服务器·科技·智能手机·云计算
nono牛36 分钟前
bash语法与init.rc语法对比
开发语言·chrome·bash
9ilk36 分钟前
【C++】--- 类型转换
开发语言·c++
没有bug.的程序员38 分钟前
云原生 + JIT:冷启动与预热优化
java·jvm·云原生·日志·gc·jit
阑梦清川39 分钟前
计算机网络--关于域名服务器的访问顺序
运维·服务器·计算机网络