code-server 的Java Web研发环境部署

Posted 嗡汤圆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了code-server 的Java Web研发环境部署相关的知识,希望对你有一定的参考价值。

Code-Server是一种Vs Code 的web部署实现,让用户可以在浏览器内使用Vs Code进行开发。官方Github详见: cdr/code-server

Code-Server默认实现并未带上Java环境等开发必须的软件,因此需要在官方镜像基础上加上其它必要程序和插件。

下边简单介绍一下我自己使用的Java Web开发环境的准备方法。主要用于Spring Cloud的微服务应用研发。

Dockerfile

这里主要从Microsoft market 里预先下载了一些插件 (vsix),其实Code-Server自己有修改过的插件列表,更新也比较及时,但是有时候下载速度太慢,因此就自备了vsix插件。
另外,安装了jdk, maven, git, svn, curl, wget, npm等常用工具。

这里安装npm是因为svn插件的应用问题所致,下文具体描述

FROM codercom/code-server:1.939
COPY vsix /vsix/
COPY jdk8 /usr/share/jdk8/
RUN mkdir ~/.m2
COPY settings.xml ~/.m2/settings.xml
ENV PATH=/usr/share/jdk8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV CLASSPATH=.:/usr/share/jdk8/lib:/lib
ENV JAVA_HOME=/usr/share/jdk8
ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
RUN sudo apt-get update && sudo apt-get install -y subversion maven git curl wget npm

#### jschardet, iconv-lite 都是为了解决svn-scm插件问题
RUN cd /usr/local/bin && sudo npm install -g jschardet
RUN cd /usr/local/bin && sudo npm install -g iconv-lite
#### jschardet, iconv-lite 都是为了解决svn-scm插件问题

COPY shell /shell/
EXPOSE 8443
WORKDIR /home/coder/project
ENTRYPOINT ["code-server"]

SVN插件的问题

详情见: svn-scm issue#546
主要表现为,在code-server中无法激活svn窗口,也无法看到报错信息

后来这个插件升级到 1.48.5 版本后,会将错误信息提示出来了,因此就可以根据异常信息进行修复了。

注意: 这里在修复时候,除了在Dockerfile中预先准备好npm,并安装好jschardet, iconv-lite外,有一定的概率在进入code-server环境后仍然报错,测试根据提示进入 /usr/local/bin 目录,再执行一次安装即可.
即: cd /usr/local/bin && sudo nom install jschardet && nom install iconv-lite

保存好配置的状态

从上文可知,在构建好自定义镜像后,还是需要进入code-server环境内安装好插件,并进行一些必要配置的。若此时该容器退出,重新拉取镜像并启动的话,这些自定义操作并不会被保存下来。因此需要在自定义操作后,把这些操作记录下来。只要将容器修改再打一个镜像即可。

docker commit -m "installed vsix and other stuff" -a "wengshengyuan" XXXXXXXXXX my-private-docker-repo/codercom/code-server:v1.0_your_custom_version

这里的XXXXXXXXXX就是容器id(Container ID), 打包好备份到自己的私服,下次则使用这个自定义镜像即可。

遇到的一些问题

这里把配置过程中遇到的问题记录下来,以后如果有新的再慢慢补充

Java Language Support 报错

这个是Java Language Server 运行遇到异常了,可能是某次使用或者插件安装过程中就的进程没有正确退出导致。表现状态为,插件日志有如下输出,java调试无法执行:

[Info - 11:53:23 AM] Connection to server got closed. Server will restart.
[Info - 11:53:29 AM] Connection to server got closed. Server will restart.
[Info - 11:53:35 AM] Connection to server got closed. Server will restart.
[Info - 11:53:41 AM] Connection to server got closed. Server will restart.
[Error - 11:53:47 AM] Connection to server got closed. Server will not be restarted.

解决办法,重启Java Language server即可。
Window下按F1, Mac下按 command + shift+ p 打开命令输入框,输入Java
执行Java: Clean the Java language server workspace 这行命令即可

以上是关于code-server 的Java Web研发环境部署的主要内容,如果未能解决你的问题,请参考以下文章

code-server搭建Web IDE实现浏览器编程

dokcer部署code-server web版vscode

如何在Kubernetes上搭建code-server 云IDE平台

如何在Kubernetes上搭建code-server 云IDE平台

如何在Kubernetes上搭建code-server 云IDE平台

code-server