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.130 | flexusx-e2c8 | Rocky Linux | Rocky Linux 9 | 27.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 活动已然开启,其便捷的一键式管理功能大大简化了运维工作。让我们携手共同探索充满无限可能的数字化未来!