作者:admin 日期:2023-09-10 浏览: 次
「干货」银河麒麟服务器操作系统V10在线IDEA arm64开发环境方案
本文为大家分享银河麒麟高级服务器操作系统V10上基于Docker、x11vnc-desktop打造基于容器的在线IDEA arm64开发环境方案,请大家多多点赞、收藏、评论、关注[来看我]!
在线IDE目前表现比较好的有云效,其功能主要还是以Web方式提供在线vscode集成开发环境,启动编辑环境初步推断为内部启动一个专用语言的虚拟机或者容器,clone源码。优点是客户端只需要一个浏览器,缺点是需要熟悉vscode开发环境,对习惯IDEA的开发者不太友好,且部分快捷键由于浏览器问题不能正常使用。
本文探索另外一个在线IDE方案,采用docker容器技术提供底层计算、存储环境,通过x11vnc-desktop在字符界面服务器容器内开启一个图形界面,通过vnc协议对外提供服务。用户通过浏览器vnc协议打开的是一个类似云端主机的远程桌面,在远程桌面内使用熟悉的IDEA进行开发工作。
与云主机(虚拟机)对比,docker方案的核心优势是轻量化,启动快,占用资源少,挂载数据盘方便。
系统准备
开启ip转发
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
下载源码
git clone https://gitee.com/hknarutofk/x11vnc-desktop.git
解决适配问题
修改Dockerfile.arm64,差异如下
diff --git a/Dockerfile.arm64 b/Dockerfile.arm64
index 12a0bb4..9e4dca6 100644
--- a/Dockerfile.arm64
+++ b/Dockerfile.arm64
@@ -167,5 +167,6 @@ WORKDIR $DOCKER_HOME
ENV DOCKER_CMD=start_vnc
USER root
-ENTRYPOINT ["/sbin/my_init", "--quiet", "--", "/sbin/setuser", "ubuntu"]
+# fix kylin server V10 bug: permission denied, use root user
+ENTRYPOINT ["/sbin/my_init", "--quiet", "--", "/sbin/setuser", "root"]
CMD ["$DOCKER_CMD"]
将启动用户由ubuntu改为root,原因是麒麟V10环境打包镜像部分目录权限错误
编译镜像
cd x11vnc-desktop/
sh buildArm64Image.sh
查看编译出来的镜像
[root@172-17-98-9 x11vnc-desktop]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
x11vnc/desktop latest c7f04e0b9cb5 14 seconds ago 1.43GB
1.启动一个实例
docker run -it --rm -p 6080:6080 x11vnc/desktop:latest
输出日志
* Starting system message bus dbus [ OK ]
* Starting OpenBSD Secure Shell server sshd [ OK ]
Open your web browser with URL:
http://localhost:6080/vnc.html?resize=downscale&autoconnect=1&password=GVkt9PAn
or connect your VNC viewer to localhost:5900 with password GVkt9PAn
2.浏览器访问vnc图形界面
打开火狐浏览器,输入地址:
http://localhost:6080/vnc.html?resize=downscale&autoconnect=1&password=GVkt9PAn
至此,我们已经成功采用docker容器方案开启了一个远程桌面服务
3. 准备编译环境
在noVNC远程桌面内的终端(LXTerminal)内执行指令
apt update
apt install -y maven openjdk-11-jdk
4. 安装IDEA
打开容器内的浏览器
下载IDEA
下载完成,打开文件管理器
进入/root/Downloads目录,释放idea到当前目录
进入释放目录,启动idea
至此,一个基于容器化的在线IDEA开发环境就基本部署完成。
本文是银河麒麟高级服务器操作系统V10 arm64架构下在线IDE的一个探索方案,文中后续的安装编译环境、安装IDEA等均可通过docker的目录挂载能力挂载不同的目录实现动态创建容器内编译、运行环境。相对于基于vscode的web访问模式,通过vnc远程桌面访问更接近本地开发体验。
后续还需要解决更加友好的UI、中文显示、输入等等方面问题。
作者:叶强
大厂数据恢复