大名鼎鼎的VSCode自然不需要多介绍了,作为一款跨平台的编辑器,配合各种插件作为主力IDE也不成问题。 基本部署本文采用docker部署code-server,基于linuxserver的镜像,code-server docker-compose.yaml version: '2.1' services: code-server: image: linuxserver/code-server container_name: code-server environment: - PUID=1026 - PGID=100 - DEFAULT_WORKSPACE=/workspace - PASSWORD=123456 - TZ=Asia/Shanghai volumes: - /volume3/docker/vscode/config:/config - /volume3/docker/vscode/workspace:/workspace ports: - 8443:8443 restart: unless-stopped
浏览器方式 http://ip:8443 即可。 后面可以按照自己的喜好安装自己常用的插件了,大部分插件是支持在server端运行的。也可以把自己桌面端的vs-code的一些配置直接复制过来。 如果只是编辑代码,这样就可以了。但如果要运行代码,不管是后端服务,还是前端(nodejs,vue)开发,总会要运行很多服务,这时就需要访问容器内的端口。 在docker-compose.yaml里增加一组固定暴露的端口范围 ports: - 8443:8443 - 30000-39000:30000-39000 配置开发环境已经是现代的编辑器了,内置了git的支持,但是老旧的项目还是很多很多的。尝试把手头一个svn+java(jdk8)+spring的项目迁移到上面。 java项目直接容器里安装依赖环境
基础镜像基于ubuntu,以root登录容器,通过apt命令可以安装大部分依赖包。安装速度慢的,可以自行替换国内镜像源。
根据自身需要以官方镜像为母版,构建自己的镜像,集成subversion到镜像 Dockerfile.yml FROM linuxserver/code-server:latest RUN set -eux; apt update; apt install -y subversion fontconfig libfreetype6; rm -rf /var/lib/apt/lists/* ENV LANG C.UTF-8
fontconfig,libfreetype6 是我的工程里的图像验证码采用的字体需要,各位要根据自己的需要安装。其实如果在linux服务器部署过自己的工程,需要什么系统依赖一般都能解决,大部分是运行时依赖。 手动安装jdk,maven等下载jdk 更新过后的 version: '2.1' services: code-server: image: linuxserver/code-server container_name: code-server environment: - PUID=1026 - PGID=100 - DEFAULT_WORKSPACE=/workspace - PASSWORD=123456 - TZ=Asia/Shanghai - JDK_HOME=/runtime/java/jdk-11.0.14.1 - JAVA_HOME=/runtime/java/jdk-11.0.14.1 - PATH=/app/code-server/lib/vscode/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/runtime/apache-maven-3.6.2-bin/apache-maven-3.6.2/bin volumes: - /volume3/docker/vscode/config:/config - /volume3/docker/vscode/workspace:/workspace - /volume3/docker/vscode/runtime:/runtime ports: - 8443:8443 restart: unless-stopped maven的运行环境可以在容易path中指定,也可以通过vscode的配置指定,这样可以安装多个版本,不同的工程指定不同的版本 vs-code的工程settings.json { 'java.configuration.runtimes': [ { 'name': 'JavaSE-1.8', 'path': '/runtime/java/openjdk-8', 'default': true }, { 'name': 'JavaSE-11', 'path': '/runtime/java/jdk-11.0.14.1', }, ], 'java.configuration.updateBuildConfiguration': 'automatic', 'maven.terminal.customEnv': [ { 'environmentVariable': 'JAVA_HOME', 'value': '/runtime/java/openjdk-8', },{ 'environmentVariable': 'MAVEN_OPTS', 'value': '-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n' } ], 'maven.executable.path': '/runtime/apache-maven-3.6.2-bin/apache-maven-3.6.2/bin/mvn', 'maven.view': 'hierarchical', } java远程调试这是VS-Code原生就支持的,使用Java的远程debug功能,具体需要配置launch.json launch.json { 'version': '0.2.0', 'configurations': [ { 'type': 'java', 'name': 'Debug java', 'request': 'attach', 'hostName': 'localhost', 'port': '8000', 'projectName': 'platform-admin' } ] } 调试工程采用jetty的maven插件,所以其实是Maven启动的java进程,所以需要配置Maven的运行参数,开启java的远程调试,这里的远程并不是指我们的浏览器和code-server,而是指code-server和在容器里运行的java进程通过socket进行调试,所以并不需要映射容器的8000端口。如果做过本机远程连服务器调试bug应该很熟悉, nodejs vue项目nodejs 下载 我的项目在nodejs v12.18.2 下运行良好,所以需要将下载的nodejs放到宿主机的runtime目录,映射到容器里,并把nodejs的bin目录配置到环境变量PATH中。 version: '2.1' services: code-server: image: linuxserver/code-server container_name: code-server environment: - PUID=1026 - PGID=100 - DEFAULT_WORKSPACE=/workspace - PASSWORD=123456 - TZ=Asia/Shanghai - JDK_HOME=/runtime/java/jdk-11.0.14.1 - JAVA_HOME=/runtime/java/jdk-11.0.14.1 - PATH=/app/code-server/lib/vscode/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/runtime/apache-maven-3.6.2-bin/apache-maven-3.6.2/bin:/runtime/nodejs/node-v12.18.2-linux-x64/bin volumes: - /volume3/docker/vscode/config:/config - /volume3/docker/vscode/workspace:/workspace - /volume3/docker/vscode/runtime:/runtime ports: - 8443:8443 restart: unless-stopped 前端项目是vue工程,编译打包其实很简单,但是要远程访问并且热更新,稍微麻烦点 vue会启动一个内嵌的web服务器,而热刷新则是vue会实时编译,浏览器通过websocket监听服务器的变化,进而刷新页面需要变化的内容或资源。
devServer: { port: 6255, disableHostCheck: true, public: 'vue.xyztech.good365.net:9090' }, |
|