我们推荐使用 docker 进行部署,同时也准备好了三个基础的 docker 镜像 cloudopt/cloudopt-next-docker:jdk8cloudopt/cloudopt-next-docker:jdk10cloudopt/cloudopt-next-docker:jdk11-openj9-node12 帮助大家简化部署过程。所有镜像都已经安装了 node12(用于使用自动文档生成)。

    首先你需要设置 maven 的配置,指定用于运行的 main 方法文件,然后在打包成 jar 后,执行这个 jar 就会执行这个方法。

    1. <plugin>
    2. <artifactId>maven-assembly-plugin</artifactId>
    3. <version>3.1.0</version>
    4. <configuration>
    5. <finalName>cloudopt-demo</finalName>
    6. <archive>
    7. <manifest>
    8. <mainClass>net.cloudopt.demo.AppKt</mainClass>
    9. </manifest>
    10. </archive>
    11. <descriptorRefs>
    12. <descriptorRef>jar-with-dependencies</descriptorRef>
    13. </descriptorRefs>
    14. </configuration>
    15. <executions>
    16. <execution>
    17. <id>make-assembly</id>
    18. <phase>package</phase>
    19. <goals>
    20. <goal>single</goal>
    21. </goals>
    22. </execution>
    23. </executions>
    24. </plugin>

    然后在 Dockerfile 中配置以下的内容,建议自己修改一下(jar 的文件名是根据上面 maven 的配置自动生成的):

    1. FROM cloudopt/cloudopt-next-docker:jdk8
    2. RUN rm -rf /project/*
    3. ADD pom.xml /tmp/build/
    4. ADD src /tmp/build/src
    5. RUN mkdir -p /project/
    6. RUN cd /tmp/build && mvn clean install -DskipTests \
    7. && mv target/cloudopt-network-jar-with-dependencies.jar /project/application.jar \
    8. && cd / && rm -rf /tmp/build
    9. # Expose port 8080
    10. EXPOSE 8080
    11. CMD ["java","-jar","/project/application.jar"]