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就可以了