桌面版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远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系。”

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

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

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

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

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

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

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

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

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

    2024年02月01日
    浏览(49)
  • 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日
    浏览(35)
  • 自己搭建远程桌面服务器-RustDesk(小白版)

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

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

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

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

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

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

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

    2024年02月08日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包