828华为云征文|Flexus云服务器X实例:在Docker环境下搭建java开发环境

828华为云征文|Flexus云服务器X实例:在Docker环境下搭建java开发环境

  • 引言
  • 一、Flexus云服务器X实例介绍
    • 1.1 Flexus云服务器X实例简介
    • 1.2 主要使用场景
  • 二、购买Flexus云服务器X实例
    • 2.1 购买规格参考
    • 2.2 查看Flexus云服务器X实例状态
  • 三、远程连接Flexus云服务器X实例
    • 3.1 重置密码
    • 3.2 本地MobaXterm工具远程连接
  • 四、创建Ubuntu容器
    • 4.1Java介绍
    • 4.2 实践环境规划
    • 4.3 本地环境检查
    • 4.4 下载Ubuntu镜像
    • 4.5 运行Ubuntu容器
    • 4.6安装java环境
    • 4.7 编辑myapp.java文件
    • 4.8 运行测试java文件
  • 五、构建java应用容器镜像
    • 5.1 编写Dockerfile文件
    • 5.2 编写测试java应用
    • 5.3 构建Docker镜像
    • 5.4 查看容器镜像
    • 5.5 运行Docker容器
  • 六、访问测试应用
    • 6.1 安全设置
    • 6.2 本地访问
  • 七、总结与体会

引言

在科技飞速发展的时代,云计算成为推动各行业进步的重要力量。华为云凭借其强大的技术实力和创新精神,始终走在行业前沿。华为云 Flexus 云服务器 X 实例,作为新一代云服务器,专为中小企业和开发者精心打造。它以卓越的柔性算力,为我们在 Docker 环境下搭建 java 开发环境提供有力支撑。

一、Flexus云服务器X实例介绍

1.1 Flexus云服务器X实例简介

华为云Flexus云服务器X实例官网:Flexus云服务器X实例

华为云Flexus云服务器X实例属于新一代云服务器,专为中小企业和开发者打造,具备柔性算力。它能够智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。与 Flexus 应用服务器 L 实例相比,Flexus 云服务器 X 实例具有诸多优势,例如提供丰富的公共镜像、可灵活自定义 vCPU 内存配比、能智能感知业务动态升降配,而且负载范围更高等。

在这里插入图片描述

1.2 主要使用场景

  • 电商直播
    在电商直播领域,Flexus 云服务器 X 实例展现出卓越的适应性。随着电商市场的动态变化,业务压力时刻处于波动之中。利用 Flexus X 实例搭建电商交易平台,能够游刃有余地应对这种变化。无论是促销活动期间流量的爆发式增长,还是日常运营中的业务压力起伏,该实例凭借其独特的性能优势,确保电商平台的稳定运行,为商家和消费者提供可靠的交易环境。
  • 企业建站
    对于企业建站需求,无论是创建博客、搭建论坛,还是构建企业门户等业务场景,Flexus 云服务器 X 实例都能发挥重要作用。它有助于企业有效地传播自身的价值信息,推动信息在企业内部、企业与客户之间的共享和交流。企业可以借助这一实例轻松搭建多功能的传播和交互平台,全方位展示企业形象、产品信息以及服务内容,从而增强企业的品牌影响力和用户粘性。
  • 个人开发测试
    在个人开发和测试方面,开发者常常需要各种各样的环境资源。Flexus 云服务器 X 实例为开发者提供了便捷且经济高效的解决方案。选择从云上获取所需资源,基于该实例搭建开发测试环境,能够让开发者更加专注于代码编写和功能测试。与传统方式相比,这种方式不仅操作更加便利,而且在成本控制上更具优势,有助于提高开发效率,缩短项目周期。
  • 游戏服务器
    Flexus 云服务器 X 实例非常适用于搭建游戏后台服务器。在游戏运营过程中,它强大的算力足以轻松应对数千人同时在线的复杂情况。当服务器玩家数量出现上涨趋势时,该实例的平滑扩容能力能够迅速响应,确保游戏的流畅性和稳定性。此外,其超强的网络加速能力显著提升了玩家的游戏体验,减少延迟、卡顿等现象,为游戏的成功运营提供了坚实的技术保障。

二、购买Flexus云服务器X实例

2.1 购买规格参考

  • 华为云Flexus X实例的购买规格可以参考如下所示:
配置项详细信息
基础配置计费模式:包年/包月
区域:华为-北京四
可用区:随机分配
实例规格性能模式:关闭(按需可开启)
实例规格:自定义 4vCPUs 12GiB
镜像选择操作系统:Rocky Linux 9.0 64bit (10GiB)
存储设置系统盘:通用型 SSD,容量 100GB
网络配置使用默认配置,可自定义VPC及安全组
弹性公网IP购买方式:现在购买
线路:全动态BGP
公网带宽:按带宽计费
带宽大小:3Mbit/s
云服务器名称名称:flexusx-e2c8(自动生成)
登录凭证:自定义账号密码
云备份当前选择暂不购买,可自行选择
  • 可参考以下配置详情页,确认无误后,勾选“协议许可”,点击立即购买。

在这里插入图片描述

2.2 查看Flexus云服务器X实例状态

购买成功后,进入到Flexus云服务器X实例控制台,可以看到Flexus X实例已经正常运行中。

在这里插入图片描述

三、远程连接Flexus云服务器X实例

3.1 重置密码

选择“重置密码”选项,重置Flexus云服务器X实例的登录密码。

在这里插入图片描述

登录密码自定义设置,勾选自动重启选项,确认。

在这里插入图片描述

3.2 本地MobaXterm工具远程连接

可以使用本地MobaXterm工具连接Flexus云服务器X实例,填写Flexus云服务器X实例的弹性公网IP地址后,在终端界面填写root账号和密码即可远程连接。

在这里插入图片描述
在这里插入图片描述

四、创建Ubuntu容器

4.1Java介绍

Java是一种高级、通用、面向对象的编程语言。它由Sun Microsystems公司于1995年推出,并且现在由Oracle维护和支持。Java的设计目标是让开发者能够编写一次代码,然后在多个平台上运行,这也被称为“一次编写,到处运行”的原则。这个特点使得Java非常受欢迎,并成为了企业级应用开发的首选语言之一。Java语言具有简单、稳定、可移植、面向对象、安全等特点。它的语法和C语言类似,但相对更简洁和易于理解。Java程序在运行时被编译成字节码,然后在Java虚拟机(JVM)上运行。这使得Java程序可以在任何具有适当JVM的操作系统上运行,大大提高了其可移植性和跨平台性。

4.2 实践环境规划

云服务器选择内网IP地址hostname公共镜像操作系统版本Docker版本
华为云 Flexus云服务器X实例192.168.0.130flexusx-e2c8Rocky LinuxRocky Linux 927.1.1

4.3 本地环境检查

检查当前的操作系统版本

[root@flexusx-e2c8 ~]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.0 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.0"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.0 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.0"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.0"

检查Docker版本,需要提前安装Docker环境。

[root@flexusx-e2c8 ~]# docker -v
Docker version 27.1.1, build 6312585

4.4 下载Ubuntu镜像

拉取Ubuntu镜像ubuntu:latest

[root@flexusx-e2c8 java]# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:dfc10878be8d8fc9c61cbff33166cb1d1fe44391539243703c72766894fa834a
Status: Image is up to date for ubuntu:latest
docker.io/library/ubuntu:latest

4.5 运行Ubuntu容器

可参考以下命令,运行ubuntu测试容器。

docker run -it --name ubuntu_test ubuntu:latest /bin/bash

在这里插入图片描述

4.6安装java环境

更新软件包列表,该列表包含可用的软件包和其版本信息,该命令会从软件源中获取最新的软件包信息并将其存储在本地。

在这里插入图片描述

安装OpenJDK 11版本的JDK

apt-get install openjdk-11-jdk -y

在这里插入图片描述

查看安装版本


root@6369625cdb15:/# java -version
openjdk version "11.0.24" 2024-07-16
OpenJDK Runtime Environment (build 11.0.24+8-post-Ubuntu-1ubuntu324.04.1)
OpenJDK 64-Bit Server VM (build 11.0.24+8-post-Ubuntu-1ubuntu324.04.1, mixed mode, sharing)

4.7 编辑myapp.java文件

编辑myapp.java文件,内容如下:

辑test.java文件

public class myapp {public static void  main (String[] args) {System.out.println("Learn Docker technology together");}
}

4.8 运行测试java文件

运行测试文件以检查是否正确输出。如果能够正常打印预期内容,则说明 Java 环境安装成功。


root@6369625cdb15:/# javac  myapp.java
root@6369625cdb15:/# java myapp
Learn Docker technology together
root@6369625cdb15:/#

在这里插入图片描述

五、构建java应用容器镜像

5.1 编写Dockerfile文件

创建部署目录

mkdir -p /data/java && cd /data/java

我们创建一个Dockerfile 来定义容器环境,在当前目录下创建一个名为 Dockerfile 的文件,并添加如下内容:

vim Dockerfile
# 使用官方的 Ubuntu 镜像作为基础镜像
FROM ubuntu:latest# 设置环境变量以避免交互式配置提示
ENV DEBIAN_FRONTEND=noninteractive# 更新软件包列表并安装 OpenJDK 和其他必要的工具
RUN apt-get update && \apt-get install -y openjdk-11-jdk maven && \apt-get clean && \rm -rf /var/lib/apt/lists/*# 设置 JAVA_HOME 环境变量
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64# 将工作目录设置为 /app
WORKDIR /app# 将本地的 Java 代码复制到容器中
COPY . /app# 编译 Java 应用程序
RUN javac test.java
# 暴露端口
EXPOSE 5000# 指定运行时执行的命令
CMD ["java", "test"]

5.2 编写测试java应用

在同一目录下创建一个简单的Java测试应用程序test.java,如下所示:

vim test.java
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;public class test {public static void main(String[] args) throws Exception {HttpServer server = HttpServer.create(new InetSocketAddress(5000), 0);server.createContext("/", new MyHandler());server.setExecutor(null); // creates a default executorserver.start();System.out.println("Server started on port 5000");}static class MyHandler implements HttpHandler {@Overridepublic void handle(HttpExchange t) throws IOException {String response = "Hello, Docker and Java!";t.getResponseHeaders().add("Content-Type", "text/plain");t.sendResponseHeaders(200, response.length());OutputStream os = t.getResponseBody();os.write(response.getBytes());os.close();}}
}

5.3 构建Docker镜像

运行以下命令来构建 Docker 镜像

docker build -t my-java-app .

在这里插入图片描述

5.4 查看容器镜像

查看本地构建成功的容器镜像,如下所示:

docker images

在这里插入图片描述

5.5 运行Docker容器

可参考以下命令,运行Docker容器。

docker run -d -p 5300:5000 --restart always  --name my-java-container my-java-app

在这里插入图片描述

查看测试容器状态,可以看到测试容器 my-java-container运行正常。


[root@flexusx-e2c8 java]# docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS                PORTS                                                                                            NAMES
03bb709f142b   my-java-app                     "java test"              19 seconds ago   Up 18 seconds         0.0.0.0:5300->5000/tcp, :::5300->5000/tcp                                                        my-java-container

六、访问测试应用

6.1 安全设置

在安全组规则管理界面,入方向规则上放行5300端口。

在这里插入图片描述

本次安装的Rocky Linux操作系统默认没有关闭防火墙,可以参考以下命令,关闭防火墙。如果不想关闭防火墙,则需要放行相关服务端口。

 systemctl stop firewalld && systemctl disable firewalld

关闭selinux服务

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

6.2 本地访问

在本地浏览器中输入以下地址:https://公网IP地址:5300(将"公网IP地址"替换为你的服务器的弹性公网IP地址),我们可以访问到java测试服务。

在这里插入图片描述

七、总结与体会

通过在华为云 Flexus 云服务器 X 实例上进行 Docker 环境下 java 开发环境的搭建,我们深刻感受到了华为云的强大实力。其柔性算力为开发过程提供了高效稳定的支持。华为云的便捷管理和优质服务也让开发工作更加顺畅。华为云无疑是中小企业和开发者的可靠之选。

华为云 Flexus 云服务器 X 实例优势非凡,拥有无限的扩展空间、卓越的强劲性能、高度的稳定可靠、灵活的资源调度以及严密的多重安全防护等特性,能够满足各类变动需求,有力保障数据安全。目前,华为云 828 活动已然开启,其便捷的一键式管理功能大大简化了运维工作。让我们携手共同探索充满无限可能的数字化未来!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544954.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Q必达任务脚本

文章目录 1.购买服务器地址2.部署教程3. 代码如下4. 如何联系我 1.购买服务器地址 服务器购买地址 https://t.aliyun.com/U/rUHk58 若失效,可用地址 https://www.aliyun.com/activity/wuying/dj?source5176.29345612&userCode49hts92d 2.部署教程 2024年最…

了解法国游戏玩家:应该知道的关键见解

随着中国开发商向全球市场扩张,了解不同地区游戏玩家的偏好和行为至关重要。法国拥有丰富的游戏文化,呈现了一个独特的市场,开发商必须考虑这些独特的功能才能取得成功。以下是中国开发者应该注意的法国游戏玩家的关键特征: 偏好…

VmWare安装虚拟机教程(centos7)

VMWare下载: 下载 VMware Workstation Pro - VMware Customer Connect 安装包:(16的版本)免费!(一个赞就行) 一直点下一步即可,注意修改一下安装位置就好 二、安装虚拟机 安装虚…

【Java】虚拟机(JVM)内存模型全解析

目录 一、运行时数据区域划分 版本的差异: 二、程序计数器 程序计数器主要作用 三、Java虚拟机 1. 虚拟机运行原理 2. 活动栈被弹出的方式 3. 虚拟机栈可能产生的错误 4. 虚拟机栈的大小 四、本地方法栈 五、堆 1. 堆区的组成:新生代老生代 …

Redis: 特点,优势,与其他产品的区别以及高并发原理

入门Redis概述 1 )选择Redis是因为其高性能 因为 Redis 它数据存储的机制是存在内存中的,减少了传统关系数据库的磁盘IO它是单线程的保证了原子性,它还提供了事务,锁等相关的机制 2 )Redis 环境安装配置 linux 或 d…

【Python-GUI图形化界面-PyQt5模块(3)】——Qwidget核心模块

本文旨在带大家学习Python中的一种GUI图形化界面模块——PyQt5模块,将为大家详细了解PyQt5模块中函数的参数和使用: 一、PyQt5简介 PyQt是Qt框架的Python语言实现,由Riverbank Computing开发,是最强大的GUI库之一。 官方网站&a…

Qt-QSpinBox输入类控件(32)

目录 描述 属性 信号 使用 描述 微调框,如下,运行用户进行细微数据的操作,点击按钮,数据就会发生 “微调” 属性 value存储的数值.singleStep每次调整的"步⻓".按下⼀次按钮数据变化多少.displayInteger数字的进制…

云服务器是干什么的?

随着云计算的发展,云服务器的功能逐步完善。但是还有不少用户不清楚云服务器是干什么的?云服务器提供了一种灵活、可扩展的计算解决方案,适用于各种在线业务和项目。提供虚拟化的计算资源是云服务器最基本也是最重要的功能。 云服务器是干什…

leetcode第169题:多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出:3 示例 …

内置函数sorted()与方法sort()的区别、内置函数reversed()与方法reverse()的区别

1、内置函数sorted()与方法sort() #内置函数sorted()与方法sort()的区别 #定义一个列表ls ls[4,3,6,7,9] print(sorted(ls)) print(ls)#sorted函数不会改变原列表的顺序,它只是生成了一个新列表(临时排序,不会改变与列表顺序) pr…

ARM单片机的内存分布(重要)

ARM单片机的内存分布(重要) 一、S32K344的内存布局 MEMORY {int_pflash : ORIGIN 0x00400000, LENGTH 0x003D4000 /* 4096KB - 176KB (sBAF HSE)*/int_dflash : ORIGIN 0x10000000, LENGTH 0x00020000 /* 128KB …

MySQL 缓冲池管理与常见优化技巧

在 MySQL 数据库的性能优化中,缓冲池的管理至关重要。同时,了解其他常见的优化技巧也能极大地提升数据库的运行效率。今天,我们就来深入探讨在 MySQL 中如何管理并调整缓冲池的大小,以及一些常见的优化技巧。 一、缓冲池的重要性…

关于 NLP 应用方向与深度训练的核心流程

文章目录 主流应用方向核心流程(5步)1.选定语言模型结构2.收集标注数据3.forward 正向传播4.backward 反向传播5.使用模型预测真实场景 主流应用方向 文本分类文本匹配序列标注生成式任务 核心流程(5步) 基本流程实现的先后顺序…

harmonyOS ArkTS最新跳转Navigation

文章目录 取消标题栏初始页面(load)设置为竖屏 自定义标题Tabs&TabContentTabs通过divider实现了分割线各种属性 图片下载 官方文档 Entry Component struct Index {State message: string Hello WorldState djs:number 5build() {Column(){Navigation(){}.title("g…

从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用

创建Token 创建token的因素(条件)有很多,在该篇文章中,采用jwt配置和用户基本信息作为生成token的基本因素(读者可根据系统,自由改变生成token因素)。 在JwtPlugInUnit.CS中创建2个方法&#xf…

大模型常见面试题汇总(含答案),非常详细收藏我这一篇就够了

最近秋招正在如火如荼地进行中,看到很多人的简历上都包含大模型相关的工作,各家大厂和初创都很舍得给钱,动辄百万年包也变得不再稀奇。 因此在大模型纵横的这个时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面…

USB 电缆中的信号线 DP、DM 的缩写由来

经常在一些芯片的规格书中看到 USB 的信号对是以 DP 和 DM 命名: 我在想,这些规格书是不是写错了,把 N 写成 M 了?DM 中的 M 到底是什么的缩写? 于是我找了一些资料,终于在《Universal Serial Bus Cables …

‘艾’公益——微笑行动「毕节站」为艾祝福,让笑起舞

艾多美“微笑行动”毕节站拉开帷幕 此次爱心帮助77名唇腭裂患儿 重新绽放微笑 不让笑容留有缺憾 每个孩子都有微笑的权利 艾多美向唇腭裂儿童伸出援手 绽放笑容,拥抱全新的未来 2024年9月18日-9月23日,毕节市妇幼保健院迎来了艾多美--微笑行动项目…

MES系统如何集成到ERP系统里

MES系统(制造执行系统)集成到ERP系统(企业资源计划)里是一个复杂但至关重要的过程,它有助于企业实现生产计划、物料追踪、质量控制和数据分析的无缝协作,从而提高生产效率和产品质量。以下是MES系统集成到E…

8086的指令系统

今天上午综测答辩结束,感觉就很一般,但是我昨晚也操心到觉都没睡好,今天中午舍友玩P5吵得我也没睡着,感觉脑袋昏昏沉沉,汇编上课没认真听讲,晚上来补一补。还是采用GPT来讲解(水文字&#xff09…