桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

这篇具有很好参考价值的文章主要介绍了桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 在前文《浏览器上写代码,4核8G微软服务器免费用,Codespaces真香》中,咱们以一个Java程序员视角体验了GitHub的Codespaces产品的beta版,简单来说有以下两大收获:
  1. 网页版vscode,其效果体验已经接近桌面版,实测电脑、iPad Pro、华为MatePad Pro的浏览器上都能使用
  2. 远程开发,编译和运行GitHub仓库的代码,实际操作是在4核8G的微软服务器上进行的,而这服务器资源对个人GitHub用户是免费的
  • 然而,对一些专一的程序员而言,网页版vscode做得再好也没有兴趣,毕竟桌面版vscode已经很优秀,习惯后实在没必要换成网页版
  • 但4核8G免费服务器的诱惑摆在眼前,岂能轻言放弃,于是就有了这篇文章:桌面版vscode远程开发,远程服务器是Codespaces的免费服务器
  • 另外还有一个衍生需求:这个免费的4核8G服务器,除了运行应用,还能做其他的事情吗?例如运行一些后台服务,为咱们的开发自测带来便利
  • 其实Codespaces官方是支持这些特性的,如下图所示,红框中就是桌面版vscode,本文要做的就是实战体验这个功能,再在Container中加入docker,让更多服务运行在这个docker上
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

实战目标

  • 为了突出实用性,本文不会照抄官方文档,而是模拟一次常规的开发过程,作为一个Java程序员,开发SpringBoot应用并操作数据库是个很有代表性的场景,因此,本篇会实现下图的效果:在VSCODE桌面版编码,而应用和MySQL(docker版)都运行在CodeSpace服务器上
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 将上述任务拆分成以下步骤去完成

  1. 在vscode桌面版进行全部操作
  2. 在vscode上做设置,使其支持Codespaces
  3. 基于GitHub仓库创建codespace
  4. 个性化设置,如设定jdk,添加docker服务
  5. 在服务器上部署MySQL
  6. GitHub仓库拉新分支
  7. 在新分支开发一个SpringBoot应用,可以操作刚才部署好的MySQL
  8. 用单元测试验证应用的基本功能
  9. 启动应用,用web页面验证基本功能
  • 经历了上述实战,对于codespace是否具备实用型这个问题,相信您应该会有自己的判断了

重要前提

  • 以下是能愉快进行本篇操作的重要前提
  1. 您的网络可以访问GitHub
  2. 您有自己的GitHub账号
  3. 您有自己的代码仓库
  4. 欣宸是个普通的Java程序员,所以在开发体验中用的是Java相关技术栈,例如代码工程是SpringBoot的,如果您擅长的是其他语言,请自行调整

环境信息

  • 以下是本次实战的环境信息,可以作为参考
  1. 操作系统:macOS Monterey(M1 Pro芯片的MacBook Pro,16G内存)
  2. vscode: 1.67.2 (Universal)
  3. JDK:8
  4. MySQL:8.0.29
  5. SpringBoot:2.7.0
  • 结束闲聊,接下来开始实战

在vscode上做设置,使其支持Codespaces

  • 打开vscode,安装codespaces插件,操作如下图
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 登录GitHub
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 点击同意后,会打开浏览器验证身份,再并弹出如下菜单
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • vscode弹出确认
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 现在进入了Codespaces管理页面,现在创建一个新的codespace,如下图,选择对应的代码仓库
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 然后选择分支
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 现在静候后台服务器初始化,大概几分钟后,页面如下,codespace创建成功,4核8G微软服务器到手,该琢磨怎么用了
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

新建分支

  • 为了不影响当前仓库的代码,这里新建一个分支,操作如下图
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 我这里新建了名为vscode-desktop-tutorial的分支,里面没有任何内容

个性化设置

  • 开始后台环境的个性化设置,这里简单起见仅设置两个特性:
  1. JDK设置成8
  2. 增加docker服务
  • 打开命令面板,输入Add Development Container Configuration Files…然后回车
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 系统会列出诸多预设环境供我们选择,Java8是现成的,果断选择
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 选择debian操作系统的版本
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • Node.js?谢谢,不用了
    桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 构建工具选择maven

  • 其他特性列表中,选择下图红框中的Docker (Moby) supoort,这样咱们的服务器就有了docker服务
  • 做完这一切后屏幕右下角会弹出提示,如下图,注意:不要点击下图红框的按钮!不要点击
  • 之所以不立即构建,因为还要给当前codespace增加两个vscode插件:SpringBoot和Lombok,下图是刚才的设置结束后自动新增的devcontainer.json文件,增加黄框中的内容
  • 如果您好奇我是如何知道SpringBoot插件对应的名字是Pivotal.vscode-boot-dev-pack,可以浏览插件市场官方网站:https://marketplace.visualstudio.com/items ,这里面的每个插件都有自己的Unique Identifier,如下图红框所示

桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 现在可以构建镜像并重建容器了,按照下图操作即可
  • 点击下图红框中的按钮就能看到构建镜像的过程,如果出错了也能在这里找到问题原因
  • 建议将刚才新增的devcontainer.json和Dockerfile文件提交到GitHub保存,这样下次新建codespace时,因为它们的存在,codespace会根据它们去构建镜像,于是每个新的codespace都会带上之前添加的个性化设置

  • 容器重建完成后,在TERMINAL用maven和docker命令验证,全部符合预期

桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 服务器算是设置得差不多了,接下来借助Docker部署MySQL

部署MySQL

  • 接下来在vscode的TERMINAL上操作,也就是在后台服务器的控制台操作,如下图
  • 新建一个文件夹,用来存储MySQL的数据库文件,这样即便容器被删除数据库文件也在,我这里是/workspaces/java-demo/mysql-data
  • 借助docker创建数据库也就是一行命令的事儿,完整命令如下,版本是8.0.29,root账号密码是123456
docker run \
--name mysql \
-p 3306:3306 \
-v /workspaces/java-demo/mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-idt \
mysql:8.0.29 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
  • 因为本地没有MySQL镜像,于是微软服务器去docker镜像仓库拉取镜像,那网速看着真是赏心悦目
  • MySQL容器很快就启动了,执行以下命令进入容器内部
docker exec -it mysql /bin/bash
  • 在容器内部就可以用mysql命令来操作数据库了
@zq2599 ➜ ~ $ docker exec -it mysql /bin/bash
root@f6a9dcc7fdcd:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.29 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
  • 接下来用命令建库、建表、新增记录,参考命令如下(这里建了个卖家表,里面有主键、卖家名称、产品数量三个字段)
# 建数据库
CREATE DATABASE first_db;

# 选中数据库
use first_db;

# 建表
CREATE TABLE IF NOT EXISTS `seller`(
    `id` INT UNSIGNED AUTO_INCREMENT,
    `name` VARCHAR(100) NOT NULL,
    `product_num` INT NULL,
    PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 新增三条记录
insert into seller (name, product_num) values ('seller1', 1111);
insert into seller (name, product_num) values ('seller2', 2222);
insert into seller (name, product_num) values ('seller3', 3333);
  • 完成了,接下来写个SpringBoot应用,然后运行起来操作数据库

开发SpringBoot应用

  • 命令行面板,输入下图红框中的内容,选择Spring Initializr
  • 选择SpringBoot版本
  • 选择语言
  • 然后是GAV坐标,java版本等,最后是依赖模块,我这里选择了web和lombok
  • 项目名称我这里是demo
  • 最后是源码目录,我这里是/workspaces/java-demo/,所有操作完成后,右下角提示新增workspace,点击Open,会打开新的workspace窗口,里面是java工程的视图,如下图所示,一定要用这个新的workspace,因为它是以demo目录为根目录层级,可以让java和maven插件识别成功,而原有的workspace以java-demo为根目录层级,导致新增的java项目无法被java和maven插件识别

桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)

  • 接下来要修改代码,增加数据库操作的功能,关于java访问MySQL的代码,就不在本篇多说了,您可以在我的GitHub仓库查看详细源码,地址是:https://github.com/zq2599/java-demo/tree/vscode-desktop-tutorial ,代码在下图红框内,一定要选vscode-desktop-tutorial分支
  • 这个SpringBoot应用是通过MyBatis库来访问MySQL的,其配置文件如下,可见连接数据库用的是127.0.0.1,因为MySQL的3306端口已经映射到应用所在服务器的3306端口
server:
  port: 8080

spring:
  # 数据源
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/first_db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver

# mybatis配置
mybatis:
  # 配置文件所在位置
  config-location: classpath:mybatis-config.xml
  # 映射文件所在位置
  mapper-locations: classpath:mappers/*Mapper.xml

# 日志配置
logging:
  level:
    root: INFO
    com:
      bolingcavalry:
        demo:
          mapper: debug

验证-单元测试

  • 来看看这个SpringBoot应用的单元测试类,是查询id等于1的记录,并验证查询结果的合法性
package com.bolingcavalry.demo;

import org.junit.jupiter.api.*;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.bolingcavalry.demo.entity.Seller;
import com.bolingcavalry.demo.service.SellerService;

@SpringBootTest
class DemoApplicationTests {

	@Autowired
	SellerService sellerService;

	@Test
	void testGetById() {
		int id = 1;
		Seller seller = sellerService.get(id);
		// 判定非空
        Assertions.assertNotNull(seller);
		// id相等
		Assertions.assertEquals(id, seller.getId());
	}
}
  • 点击下图红框中的按钮,执行单元测试通过,证明读数据库一切正常

验证:web

  • 这个SpringBoot应用有一个web接口,源码如下
@RestController
@Slf4j
public class SellerController {
    
    @Autowired
    private SellerService sellerService;

    @RequestMapping(value = "/seller/{id}", method = RequestMethod.GET)
    public Seller get(@PathVariable("id") Integer id) {
        log.info("get entity, id=[{}]", id);
        return sellerService.get(id);
    }
}
  • 点击下图红框中的按钮启动应用
  • 确认8080出现在端口映射列表中
  • 浏览器访问 http://localhost:8080/seller/1 ,如下图,可以正常响应
  • 验证完成

提交到GitHub

  • 最后记得将代码和codespace配置提交到GitHub仓库
  • 由于新建的/workspaces/java-demo/mysql-data目录里保存的是MySQL数据库文件,没必要提交到GitHub,建议在.gitignore中添加此目录,位置和内容如下
  • 至此,一次典型的SpringBoot应用开发和调试过程就完成了,整个过程中vscode作为文本编辑和命令输入的工具,编译、单元测试、运行、docker服务这些都在远程codespace后台运行,下载镜像和jar包也是服务器去做的,实际网速非常理想,本地电脑始终保持低资源消耗,流畅的体验贯穿始终(网络要保持稳定)

  • 希望本篇能给您一些参考,白piao微软,我们一直在努力…文章来源地址https://www.toymoban.com/news/detail-452091.html

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

到了这里,关于桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Windows远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。”

    Windows远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。”

      1、win键+R打开运行器,使用mstsc -admin命令强制远程 2、输入远程服务器ip、用户名和密码,忽略证书问题的提示框,即可连接进入远程桌面    3、在远程桌面中,打开远程服务器的运行框,使用regedit命令打开注册表  进入计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerm

    2024年02月16日
    浏览(13)
  • 银河麒麟(桌面版和服务器版)之远程桌面安装

    银河麒麟(桌面版和服务器版)之远程桌面安装

      在信创方案中经常介绍支持麒麟系统,实际上麒麟分为银河麒麟和中标麒麟,银河麒麟又分为服务器版和桌面版,服务器器版一般用于应用系统部署,桌面版一般用于日常办公。银河麒麟操作系统作为国产操作系统,是目前国产化、信创等项目场景的主流操作系统之一,

    2024年02月11日
    浏览(14)
  • Windows远程桌面配置(阿里云ECS服务器+frp+windows远程桌面配置)

    Windows远程桌面配置(阿里云ECS服务器+frp+windows远程桌面配置)

    因为老妈不太懂电脑,所以对远程桌面的使用可以追溯到大学时期,最开始用的 Teamviewer ,还没有被国内代理,连接速度、画质都很可以,后来被代理后,限制太多,使用体验也不好,试用了一下 向日葵 ,感觉不错,就一直用到了现在。 最近不知道是不是家里或者我这边网

    2024年03月27日
    浏览(12)
  • Windows Server 2008 远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。”

    Windows Server 2008 远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。”

    一、首先可以临时强制远程到服务器 win键+R打开运行框 二、在远程桌面中,打开远程服务器的运行框,使用regedit命令打开注册表 1、进入计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerRCMGracePeriod 2、右击“GracePeriod”,点击权限,再点击高级 3、选择Administrator用

    2024年02月04日
    浏览(19)
  • VNC连接服务器实现远程桌面 --以AutoDL云服务器为例

    VNC连接服务器实现远程桌面 --以AutoDL云服务器为例

    VNC连接服务器实现远程桌面 --以AutoDL云服务器为例 针对本地机为Windows 地址:autodl官网 云服务器租显卡跑些小模型很方便,但是当你想做可视化的时候,可能会遇到麻烦,云服务器没有显示输出界面,无法可视化一些检测任务的结果,或者可以下载结果到本地搭建环境跑可视

    2024年02月01日
    浏览(53)
  • Mac OS 使用远程桌面登录服务器

    Mac OS 使用远程桌面登录服务器

    以下操作以 Microsoft Remote Desktop for Mac 为例。微软官方已于2017年停止提供 Remote Desktop 客户端的下载链接,转由其子公司 HockeyApp 进行 Beta 版本的发布。您可前往 Microsoft Remote Desktop Beta 下载 Beta 版本 Microsoft Remote Desktop Beta 在 “PC name” 处输入实例公网 IP。 单击其余选项保持默

    2024年02月07日
    浏览(12)
  • 自己搭建远程桌面服务器-RustDesk(小白版)

    自己搭建远程桌面服务器-RustDesk(小白版)

    此软件主要功能为远程各种设备(其中包括Windows、macOS、Linux、iOS、Android、Web等) 支持文件传输(可直接拷贝远程电脑的文件,类似向日葵的远程文件) 支持内网穿透(支持端口映射,TCP/UDP,支持Windows默认远程桌面应用) 最主要优点为可远程Android,本人最爱,简单配置,

    2024年02月01日
    浏览(15)
  • 服务器远程管理——远程桌面连接和telnet的详细步骤

    服务器远程管理——远程桌面连接和telnet的详细步骤

    远程桌面 首先在VMware中打开两台虚拟机 在虚拟机设置中将两台虚拟机的网络模式改为自定义,并且都选择VMnet1 打开第一台虚拟机(此处我们一台用Windows2003,一台用Windows XP) 右击我的电脑—属性—远程—启用这台计算机上的远程桌面 对虚拟机的IP地址进行配置 右击网上邻

    2024年02月16日
    浏览(12)
  • RustDesk 搭建一个自己的远程桌面中继服务器

    RustDesk 搭建一个自己的远程桌面中继服务器

            现在很多商业远程软件要么收费,要么有或多或少的问题。因此急需一个可以自定义且方便快捷的远程桌面软件代替他们,rustdesk就是这样一个开源项目         github地址:https://github.com/rustdesk/rustdesk                 可以自行下载编译,或者按照自己的需求修改。

    2024年02月07日
    浏览(17)
  • CLO-为云服务器配置vnc远程桌面

    CLO-为云服务器配置vnc远程桌面

            本文共分五个部分,分别是配置云服务器安全组放开所有端口、为云服务器安装虚拟桌面、为云服务器安装vnc_server、为本地电脑安装vnc_client、分析vnc交互报文。         首先更新系统 【腾讯云】登录官网-【控制台】-【我的资源】-【云服务器】-【网络与安全】-【

    2024年02月08日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包