繁体   English   中英

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

[英]How to use a google cloud VM instance as a server, provided I already have a .jar executable?

我正在尝试为大学项目设置申请。 它是一个maven / tomcat Spring Boot应用程序(一个网站),我使用STS在我的本地机器上编码。

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

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

我对这些事情都很陌生,所以请注意,我可能会过度简化这个过程。 我应该将文件插入某个特定的文件夹吗? 任何关于我应该如何进行的见解都非常受欢迎。 谢谢大家的时间。 〜麦克

如果要直接运行.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.

第一步:使用此链接将docker安装到服务器上

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

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

一种。 pom.xml的顶部,在<parent>标记之后,添加以下有关项目的元信息

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

<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>

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

  1. 在项目的根目录中,创建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查看构建的docker images

  1. 现在我们需要从GCP端配置:(不会是描述性的。可以找到很多好文章,请谷歌。)

    一种。 在您的笔记本电脑中配置GCP容器注册表gcloud-cli (对于初次使用的用户来说这有点棘手,但是一些研究比输入直接答案更好)

  2. 配置gcloud-cli ,将映像推送到注册表。

    一种。 码头图片b。 复制构建的图像的图像ID。 C。 docker tag / :(请查看GCP的文档)d。 docker push /:

现在我们已将构建的映像推送到私有docker存储库。

  1. 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应用程序。 从这里,可以根据需要配置反向代理,或更新防火墙设置,以便可以到达所述端口的流量。

我明白,这有点困难和混乱,但我建议,很多研究会对你有所帮助。 一旦熟悉dockergcloud-cli ,它不会被混淆了。 如果需要详细步骤,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM