gpt4 book ai didi

java - 如果我已经有 .jar 可执行文件,如何使用谷歌云虚拟机实例作为服务器?

转载 作者:行者123 更新时间:2023-12-02 05:23:27 26 4
gpt4 key购买 nike

我正在尝试为大学项目申请。这是一个 maven/tomcat Spring Boot 应用程序(一个网站),我使用 STS 在本地计算机上对其进行了编码。

该应用程序在我的本地计算机上运行良好,这意味着我已将其编译成 jar 文件,运行它,并且我可以从本地主机看到它。链接、cookie 和一切都按预期工作。现在,我想在预装了 tomcat 和静态 IP 地址的 Google 云虚拟机实例中运行它,但我非常不确定如何做到这一点。

我尝试使用 scp 将 jar 文件(以及所有资源和类)传输到我的 VM 实例,然后从那里运行它。但是当我尝试终止所有 tomcat8 进程并运行我的文件时,系统仍然提示我经典的“It Works!”页面,不是我的页面。

我对这些事情非常陌生,所以请注意我可能过于简化了过程。我应该将文件插入某个特定文件夹吗?任何关于我应该如何继续的见解都是非常受欢迎的。感谢大家抽出宝贵的时间。 〜迈克

最佳答案

如果你想运行.jar直接文件,然后按照以下步骤操作:

1. scp app.jar <IP>:.
2. cp /home/ubuntu/app.jar /opt/tomcat/webapps/
3. cd /opt/tomcat/bin/ // Assuming tomcat is properly installed with users configured.
4. ./catalina.sh start // Start the tomcat

上述设置应该足以部署应用程序。如果您监视 tomcat 启动日志,您将获得注册应用程序的注册 URL。

tomcat部署很好,但是有更好的方法:使用docker(对于第一次安装的用户,步骤可能有点困惑。将尝试解释所有步骤,但需要一些谷歌,如果有任何步骤不按预期工作。)

以下解决方案涉及以下步骤:

1. Install docker on the server.
2. SpringBoot application configuration for containerization on the host machine.
3. GCP configuration on the host machine for pushing the built image to private container repository.
4. Configuration of the server for GCP for pulling the image from private container repository and finally starting the application.

第一:使用此 link 将 docker 安装到服务器上

第二:设置/配置用于 docker 部署的 spring boot 应用程序。

  1. 为maven安装spotify docker插件,以便在maven构建过程中构建docker镜像,我们还将在这里为maven添加所需的docker配置。

a.在您的pom.xml的顶部,在<parent>之后标签,添加以下有关您的项目的元信息

    <groupId>com.companyName</groupId>
<artifactId>projectArtifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Project Name</name>

b.下<build><plugins>部分,添加以下代码:

    <plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.9</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<!-- <goal>push</goal> -->
</goals>
</execution>
</executions>
<configuration>
<repository>companyName/${project.artifactId}</repository>
<tag>${project.version}</tag>
<noCache>true</noCache>
<buildArgs>
<JAR_FILE>target/${project.artifactId}-${project.version}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>

在上面的步骤中,我们已将 docker 插件添加到 maven 构建过程中,并添加了有关项目的元信息,因此 .jar是用上述名称和版本构建的。

  • 在项目的根目录中,创建 Dockerfile并添加以下内容:

    # Use java 8 on bare linux as our base image
    FROM openjdk:8-jdk-alpine

    # Accepting argument from mvn plugin
    ARG JAR_FILE

    # Set ENV mode
    #ENV STAGE=default
    ENV DOCKER=true

    # Renaming Jar File
    COPY ${JAR_FILE} app.jar

    # Starting the application
    CMD ["java", "-jar", "/app.jar"]
    # For actual prod applications, profiles wrt application.properties are used, but for college project, its ok*(Ignoring for first time configuration)
    # CMD ["java", "-Dspring.profiles.active=${STAGE}", "-Dserver.port=6262", "-jar", "/app.jar"]

    # Assuming the application port to be 6262. Replace with the appropriate port.
    EXPOSE 6262
  • 现在SpringBoot端所需的配置已经完成。要部署应用程序,我们需要首先构建 docker image 。这可以通过以下方式完成:

    a. cd to root of the project.
    b. docker build -t companyname/projectname .

    上述步骤将构建图像。构建的镜像可以通过docker images查看

  • 现在我们需要从GCP端进行配置:(不会进行描述。可以找到很多好文章,请google。)

    a. Configure GCP container registry还有gcloud-cli在您的笔记本电脑中(对于第一次使用的用户来说有点棘手,但进行一些研究比直接输入答案更好)

  • 一次gcloud-cli配置完成后,将镜像推送到注册表。

    a. docker 图片b.复制构建图像的图像 ID。C。 docker tag/: (请查看GCP的文档为例)d. docker推送/:

  • 现在我们已将构建的镜像推送到私有(private) docker 存储库。

  • ssh 到服务器:(此步骤可以通过多种方式完成,对于实际用例,最好使用 CICD 管道工具。)这里我们将遵循一个简单的方法。

    a. Configure gcloud-cli with new IAM user in the server.
    b. Login to gcloud repository
    c. docker pull <asia.gcr.io/gcp-project-id>/<project>:<tag>
    d. docker run -p <hostport>:<applicationport(6262 here)> --name container_name -d <asia.gcr.io/gcp-project-id>/<project>:<tag>
  • 上述步骤应启动 docker 容器,并且 SpringBoot 应用程序应运行。从这里,如果需要,可以配置反向代理,或更新防火墙设置,以便流量可以到达所述端口。

    我理解,这有点困难和令人困惑,但我建议,大量的研究会对你有所帮助。一旦熟悉docker , gcloud-cli ,就不会再困惑了。如果需要任何详细步骤,请告诉我。

    关于java - 如果我已经有 .jar 可执行文件,如何使用谷歌云虚拟机实例作为服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56246000/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com