服务器(容器)开发指南——code-server

news2025/1/25 9:20:28

文章目录

  • code-server简介
  • code-server的安装与使用
    • code-server的安装
    • code-server的启动
      • code-server的简单启动
      • 指定配置启动code-server
    • code-server环境变量配置
  • code-server端口转发
    • 自动端口转发
    • 手动添加转发端口
  • nginx反向代理code-server
  • code-server打包开发版镜像

  • GitHub官方地址
  • 官方下载地址

code-server简介

code-server:运行在浏览器上的VSCode。

自VSCode发布以来,VSCode就受到了广大程序员的青睐。VSCode丰富的插件能够满足使用者各色各样的需求。但VSCode使用受限于图形化界面的需求,只能安装在客户端而不能安装在服务器上。code-server的出现完美的解决了VSCode不能安装在服务端的缺陷。

code-server是一款运行在浏览器界面上的可以安装在任何机器上的VSCode程序,code-server不仅继承了VSCode的使用逻辑,丰富的插件,在VSCode的基础上还提供了更多VSCode所没有的特性,满足更多的使用场景和业务需求。

code-server具有以下特性:

  • 绿色安装:code-server可以通过压缩包解压运行,不需要直接安装,相比软件包安装的方式更加绿色
  • 一次部署,终身开箱即用:每次安装完VSCode后,都需要重新进行VSCode的相关配置,安装插件。code-server由于其绿色安装的特性,可以将相关配置和插件安装在指定路径,这样在机器中需要code-server时,只需要拷贝运行即可,不需要在额外安装插件,进行软件配置
  • 服务器部署,容器集成:code-server只需要部署后,其他任何能够访问到部署机器的地方都可以通过code-server访问服务,相比传统IDE,更容易集成进服务器和容器内进行开发
  • 端口转发:code-server相比传统IDE和VSCode,自带有端口转发功能。通过code-server,在服务器因防火墙或容器内等开放端口受限等情况下,自动代理转发服务,减少额外的端口开放操作。

code-server的安装与使用

code-server的安装

  • 官方下载地址

通过在GitHub上下载code-server解压之后即可使用code-server。GitHub上提供了code-server的软件包安装和压缩包解压方式,这里推荐使用压缩包绿色安装方式进行下载,方便后期的使用和迁移。这里以4.16.1版本为例进行安装使用。

根据系统环境和CPU架构选择安装包:

wget https://github.com/coder/code-server/releases/download/v4.16.1/code-server-4.16.1-linux-amd64.tar.gz

解压指定位置:

tar -xzvf code-server-4.16.1-linux-amd64.tar.gz --strip-components 1 -C ${target_path}/code-server
  • 指定路径解压前,通过mkdir -p命令确保指定路径存在
  • --strip-components Number: 解压时清除Number个引导目录,一般情况下,Number为1表示不包含打包前原目录,若无此参数,将会解压到${target_path}/code-server/code-server-4.16.1-linux-amd64路径下,而不是${target_path}/code-server路径下
  • -C: 指定解压路径

code-server的启动

code-server解压后即可使用。默认的可执行二进制文件在解压位置的bin目录下: ${target_path}/code-server/bin/code-server。执行该文件即可启动code-server。

code-server的简单启动

执行code-server可执行文件,启动code-server:

${target_path}/code-server/bin/code-server
  • code-server支持以登录密码的方式启动,在网页中访问code-server时。code-server需要读取配置文件,判断认证方式实现登录认证。在不指定认证方式和配置文件的情况下,首次启动code-server时,code-server会自动以密码认证方式生成~/.config/code-server/config.yaml文件。
  • code-server在使用时需要有相应的数据存放路径,存放其缓存、配置、插件等文件内容。code-server默认包括user-data用户数据目录和extensions插件存放目录。默认情况下extensions目录在user-data目录下。在不指定数据目录的情况下,首次启动code-server时,code-server会在~/.local/share/code-server路径中生成需要的文件。
  • code-server在不指定绑定IP和PORT的情况下,默认绑定在127.0.0.1:8080端口上,可以通过访问127.0.0.1:8080在访问code-server服务。

指定配置启动code-server

在不指定配置文件和数据目录的情况下,code-server默认会以~路径下的配置为主。这样在我们进行迁移时还需额外迁移备份其他路径下的文件,无法做到一次配置,终身开箱即用。所以我们可以在启动code-server时,通过指定数据路径,将配置文件和数据目录以及插件默认生成在解压缩位置。

code-server支持密码认证,为了安全起见,code-server不允许在启动时指定密码,而是通过写入配置文件的方式执行密码认证。若采用密码认证方式使用code-server,需提前新建config.yaml文件。

创建${target_path}/code-server/config.yaml文件并写入:

bind-addr: 0.0.0.0:8080
auth: password
password: ${password}
cert: false

指定配置启动code-server:

nohup ${target_path}/code-server/bin/code-server --auth password --bind-addr 0.0.0.0:8080 --config ${target_path}/code-server/config.yaml --user-data-dir ${target_path}/code-server/user-data --extensions-dir ${target_path}/code-server/extensions ${workdir} &
  • --auth: code-server目前只支持[password, none]两种认证方式,密码无法通过命令行方式设置,需要写入配置文件中
  • --bind-addr:code-server启动服务默认绑定127.0.0.1:8080,可以根据实际情况绑定需要的IP和PORT
  • --user-data-dir: 指定code-server默认用户数据目录,存放缓存、配置、插件等文件内容。默认路径~/.local/share/code-server
  • --extensions-dir: 插件路径,默认情况下在--user-data-dir路径下
  • ${work-path}: 工作空间,指定的情况下,登录code-server后默认打开配置的${work-path}路径

code-server环境变量配置

通过以上方式操作code-server,在每次执行时都需要指定具体路径,为方便起见,可以将code-server路径写入环境变量中方便使用。

.bash_profile.bashrc文件中写入以下配置:

export PATH="${target_path}/code-server/bin:$PATH"

重载配置文件:

source [~/.bashrc | ~/.bash_profile]

code-server端口转发

在服务器环境中,为了保证安全性,一般只会开发部分端口供外网使用。在服务众多而端口有限的情况下,可以通过部署code-server,即能够通过code-server访问服务端环境进行内部开发,也可以使用code-server特有的端口转发功能,替代nginx的一部分功能实现服务代理。

code-server支持自动端口转发和手动添加端口转发服务来实现端口转发功能

自动端口转发

在code-server软件中启动的服务,code-server都会默认转发该服务到${--bind-addr}/proxy/${source_port}上,访问该地址即可访问转发到服务。
自动端口转发

手动添加转发端口

手动添加转发端口
在code-server中打开终端,在PORTS栏中手动输入需要转发到端口号,code-server即可帮助我们转发端口。

nginx反向代理code-server

在具体的使用中,有时我们会希望将code-server代理到指定端口或者指定域名上。code-server在使用中需要通过websocket机制进行通信,所以在进行nginx代理时,需要配置相关配置。

创建code-server.conf文件,配置对code-server对代理。

server {
    listen 80;
    server_name ${target_domain_name};

    location / {
        proxy_pass http://127.0.0.1:8080/;
        # 代理WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
    }
}

nginx.conf文件中引入code-server.conf配置:

...

http {
	...
	
	include ${code-server_conf_path}/code-server.conf
	
	...
}

code-server打包开发版镜像

Dockerfile打包文件内容如下:

FROM ubuntu:22.04

COPY ./code-server /data/code-server

ENV PATH="/data/code-server/bin:${PATH}"

WORKDIR /data

EXPOSE 8080
VOLUME [ "/data" ]

CMD ["code-server", "--auth", "password", "--bind-addr", "0.0.0.0:8080", "--config", "/data/code-server/config.yaml", "--user-data-dir", "/data/code-server/user-data", "--extensions-dir", "/data/code-server/extensions", "/data"]
  • 在以密码的方式启动code-server时,会读取config.yaml文件,所以在通过密码认证的情况下,建议提前将config.yaml文件存在在导入路径下。
  • 通过打包code-server到镜像中的方式 ,在访问code-server时,访问的是容器内部的服务环境,更适合对服务端代码进行远程修改,不适合直接对服务器环境和Docker环境进行运维等操作

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

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

相关文章

Qt --- QTimer

在Qt开发界面的时候,非常多的时候都得使用定时器,定时器具体可以干什么呢?比如:控制时钟、定时改变样式、改变进度等。。。说到这里,经常使用QQ,而不同的时段都会显示不同的背景,我认为如果用Qt…

商城-学习整理-集群-K8S-集群环境部署(二十四)

目录 一、MySQL集群1、mysql集群原理2、Docker安装模拟MySQL主从复制集群1、下载mysql镜像2、创建Master实例并启动3、创建 Slave 实例并启动4、为 master 授权用户来同步数据1、进入 master 容器2、进入 mysql 内部 (mysql –uroot -p)3、查看 master 状…

告别数字化系统“物理叠加”,华为云推动智慧门店价值跃迁

文|智能相对论 作者|叶远风 有大屏幕滚动播放广告; 有人脸识别系统让消费者自助结账; 有订单管理系统综合分析一段时间内总体经营情况; 有全门店监控直连总部机房; …… 以搭载数字化系统的硬件设备为表面特征的智慧门店&a…

Seaborn 基本语法及特点

文章目录 简介图类型关系型图数据分布型图分类数据型图回归模型分析型图多子图网格型图FacetGrid () 函数PairGrid () 函数 绘图风格、颜色主题和绘图元素缩放比例绘图风格颜色主题绘图元素缩放比例 简介 Seaborn 是 Python 中一个非常受用户欢迎的可视化库。Seaborn 在 Matpl…

webpack5 (二)

什么是bable 是 js 编译器,主要的作用是将 ES6 语法编写的代码转换为向后兼容的 js 语法,以便可以运行在当前版本和旧版本的浏览器或其他环境中。 它的配置文件有多种写法: babel.config.*(js/json) babelrc.*(js/json) package.json 中的…

centos7物理机安装并配置外网访问

安装准备工作 安装之前需要准备一下,需要一个U盘,其次需要准备以下内容 1.需要centos7的ISO系统镜像 2.使用UltraISO软件写入ISO镜像 3.一台windows系统 将系统写入到U盘,写入步骤 打开UltraISO点击文件 → 打开,选择Linux镜…

飞天使-k8s基础组件分析-安全

文章目录 名称空间解释访问kubernetes API的控制RBAC的介绍 kubeconfig用户的创建集群默认角色 给组创建授权针对pod配置服务账户参考文档 名称空间解释 名字是啥? 答:集群中每个对象的名称对于该类型的资源都是唯一的。并且每一个对象在整个集群中也有…

『C语言入门』初识C语言

文章目录 前言C语言简介一、Hello World!1.1 编写代码1.2 代码解释1.3 编译和运行1.4 结果 二、数据类型2.1 基本数据类型2.2 复合数据类型2.3 指针类型2.4 枚举类型 三、C语言基础3.1 变量和常量3.2 运算符3.3 控制流语句3.4 注释单行注释多行注释注释的作用 四、 …

【给自己挖个坑】三维视频重建(NSR技术)-KIRI Engine

文章目录 以下是我和AI的对话通过手机拍摄物体的视频,再根据视频生成三维模型,这个可实现吗我想开发类似上面的手机应用程序,如何开发呢 看了以上回答,还是洗洗睡吧NSR技术的实现原理是什么呢有案例吗我是名Java工程师&#xff0c…

Flink_state 的优化与 remote_state 的探索

摘要:本文整理自 bilibili 资深开发工程师张杨,在 Flink Forward Asia 2022 核心技术专场的分享。本篇内容主要分为四个部分: 相关背景state 压缩优化Remote state 探索未来规划 点击查看原文视频 & 演讲PPT 一、相关背景 1.1 业务概况 从…

ABB PP846 3BSE042238R1触摸屏

触摸界面:这款触摸屏设备允许用户通过触摸屏幕来执行操作,如选择、控制和设置。 高分辨率显示:触摸屏可能具有高分辨率的显示屏,以显示图形、数据和控制界面。 多语言支持:它可能支持多种语言,以适应不同…

数据采集:selenium 获取 CDN 厂家各省市节点 IP

写在前面 工作需要遇到,简单整理理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对…

nacos安装部署

docker下载安装(双端口,支持seata使用) 1、docker run --name nacos -e MODEstandalone -d -p 8848:8848 -p 9848:9848 -p 9849:9849 nacos/nacos-server 2、访问:http://localhost:8848/,账号密码nacos

山西电力市场日前价格预测【2023-08-25】

日前价格预测 预测明日(2023-08-25)山西电力市场全天平均日前电价为314.22元/MWh。其中,最高日前电价为336.17元/MWh,预计出现在18: 30。最低日前电价为283.05元/MWh,预计出现在24: 00。 价差方向预测 1: 实…

千呼万唤!字节首个大模型产品“豆包”面世公测,无需邀请码!

相较其他大厂,字节跳动在大模型领域的进展一直比较神秘,最近相关项目终于露出了冰山一角。 字节跳动旗下首个AI对话产品“豆包”目前已经上线,面向公众开始测试,无需邀请码,直接可以在官网(https://www.do…

Mysql 设置表字段自动赋值创建时间,以及自动更新某一个字段的更新时间

使用场景 一般表设计中记录都有创建时间以及更新时间,而 Mysql 也支持了这种通用的设计需求。 即:可以通过默认值来给时间字段自动赋值,在创建时的默认值就是当前时间也就是记录的创建时间。 记录更新:即某一记录更新时我们要更…

骨传导耳机适合运动时佩戴吗?精选五款适合运动时佩戴的耳机

当专业运动耳机已经成了运动新贵们的常用穿戴拍档,给夜跑、骑行、撸铁增添了更多期待和振奋。而骨传导耳机凭借自身健康、舒适、安全的聆听方式,迅速脱颖而出成为运动健身中最健康的黑科技耳机,但由于市面上的骨传导耳机技术参差不齐,一不留神…

解决生僻字,中兴新支点操作系统通过GB 18030-2022《中文编码字符集》认证

您认识上图中的这个字吗? 上面一个“鸟”,下面一个“甲”,这个字读“nia(四声)”。它是云南丽江傈僳族中一支氏族的姓氏。这个氏族以鸟为图腾。因信息系统中无法输入显示“nia”字,氏族里近700人不得不妥协…

springboot使用properties

一、方式1: 1.1.配置类: package cn.zyq.stater.config;import cn.zyq.stater.bean.User4; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework…

C语言实现基于数组的环形缓冲队列

背景 在C语言编程场景中,常常需要对一段不定长数据进行缓存。这里提出一种基于数组的环形缓冲队列,解决上述场景的问题。 原理 如下图所示,首先定义数据长度为buf[8],初始化指针为in/out 其中in为缓冲数据的输入指针 out为缓…