首页 > 其他分享 >Codespaces个性化后台服务器配置指南

Codespaces个性化后台服务器配置指南

时间:2023-08-19 11:22:31浏览次数:39  
标签:配置 Codespaces codespace 服务器 docker Dockerfile devcontainer 个性化

欢迎访问我的GitHub

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

前文概览

  • 在前文《浏览器上写代码,4核8G微软服务器免费用,Codespaces真香》中,咱们以一个Java程序员的视角体验了GitHub的Codespaces产品的beta版,用浏览器编码并运行,体验上接近桌面版vscode,并且还能免费使用4核8G服务器执行编译运行的消耗资源的操作,让平板电脑、破旧电脑都能流畅的编写和运行代码,当时的感觉真是:
image-20220602230146814

本篇概览

  • 然而,哪有十全十美的事情,运行应用的服务器是GitHub自动分配和设置的,里面的一切都是默认的,很难符合我们的实际需要,例如:
  1. JDK版本固定是17,然而我Java8用得666
  2. Maven版本固定是3.8.5,然而我可能还在用3.8.4
  3. 微服务很常用,然而没有注册中心,服务起不来
  • 所以,不解决个性化设置的问题,Codespaces与我而言只是个HelloWorld工具

  • 当然了,这么明显的问题官方不会坐视不管的,今天就请随欣宸一同掌握如何对后台服务器进行个性化设置,并且将这些设置保留下来,随时想用就用

  • 本篇由以下内容构成

    1. 分析服务器可配置的基本原理
    2. 修改服务器配置
    3. 让配置生效
    4. 验证
    5. 保存配置
    6. 验证配置能不能在新的codespace使用
  • 注意:篇幅所限,今天咱们仅掌握如何配置个性化服务器的技巧,至于配置一些实用的、稍微复杂的个性化环境的操作就留在下一篇吧

分析服务器可配置的基本原理

  • 动手配置前,需要弄清楚之前反复提到的免费的微软服务器到底是什么概念?一台电脑?还是一个虚拟机?

  • 来回顾官方的说明,如下图,所谓的免费的微软服务器,4核8G内存32G硬盘,其实就是下图的绿色部分,一个docker容器

img

  • 下图是官方文档,也证实了docker容器这一说法

image-20220528172019957

  • 咱们对着上面的图来捋一捋:
  1. 微软的Azure,就像阿里云一样,提供了很多云服务器
  2. 这些云服务器由很多虚拟机组成(用过ECS的读者应该很容易理解)
  3. 虚拟机上装了docker
  4. 作为GitHub个人开发者的咱们在页面上点击创建Codespaces
  5. 虚拟机上的docker创建一个容器,并且限制了4核8G内存32G硬盘
  6. 新建的docker容器中,代码被复制进来
  7. 网页版的vscode和docker容器建立联系
  8. 咱们可以愉快的写代码并且运行了,docker容器表现得就像个普通的linux服务器一样,处理着来自网页的各种命令
  • 以上就是从创建到运行的过程了,但是等一下!JDK和Maven,好像捋的时候没有提到呀,这要是漏掉了,欣宸你也太水了,滚吧...
  • 写了那么多docker方面的原创,JDK和Maven怎么来的这种关键信息自然是不会漏掉的,注意了,真像只有一个,看下图的黄色字体
image-20220528165500561
  • 容器的内容来自docker镜像,所以接下来会顺着这个思路去探寻真像
  • 接下来按照下图的流程开始实践
流程图 (24)

新建一个codespace,再配置它

  • 再新建一个Codespace,操作如下图
image-20220528183150581
  • 选择合适的分支,点击底部的Create codespace
image-20220528183340348
  • 此刻会进入网页版vscode页面,一切都和前一篇咱们第一次创建codespace一样
  • 接下来开始配置容器了,如下图操作可以打开命令面板

image-20220528184234864

  • 输入dev container,会过滤出两条记录,鼠标点击第一条Add Development Container Configuration Files...

image-20220528184426123

  • 这时候会出现所有预定义好的配置,如下图,此时可以在输入框数据关键词过滤
image-20220528184726508
  • 我这里就选Java 8,然后会提示让您继续选择,如Debian的系统版本,要不要Node.js,要不要Maven,要不要Gradle等
image-20220528185122826
  • 最后给出一堆软件列表,问你要不要预装,您可以按需选定
image-20220528185415068
  • 点击OK按钮完成选定,稍等数秒,发现代码仓库中新增了名为.devcontainer的文件夹,里面有两个文件:devcontainer.jsonDockerfile,这就是配置文件,它们是打造个性化服务器的关键

image-20220528190424271

  • 首先是Dockerfile文件,这是制作容器镜像的脚本,然后是devcontainer.json,显然这是个配置,里面有很多Dockerfile用到的配置项,如下图,刚才咱们对maven和gradle的选择就在devcontainer.json中保持着,然后在Dockerfile中用到

image-20220528193126393

  • 至此,真相大白:服务器用的是上述Dockerfile构建的镜像,另外还会工具devcontainer.json来做做一些配置,例如预装vscode插件,因此,定制Dockerfile和配置devcontainer.json,就能打造出个性化后台服务器

让配置生效

  • 前面做了一些设置,结果也保存在devcontainer.json文件中了,但这些设置并没有生效,在控制台输入java -version检查一下,还是17

image-20220528193632107

  • 为了让刚才的配置生效,咱们需要用Dockerfile重新构建docker镜像,再重新创建容器,在命令面板中输入

rebuild container,选择唯一的过滤结果

image-20220528193929809

  • 会弹出提示,大致是说东西会保留,但是codespace会重建,点击Rebuild

image-20220528194121987

  • 现在开始构建docker镜像了,需要稍等几分钟
image-20220528194322735
  • 大约两三分钟后完成镜像构建和容器创建,vscode页面自动被打开,这一次,再去试试java -version命令,如下图,这版本号,1.8,如你我所愿

image-20220528194634904

  • 至此,咱们已经掌握了修改配置并且使其生效的方法,所谓的自定义配置,就是按照自己的需求去深入修改devcontainer.json和Dockerfile文件,使GitHub为我们构建出更个性化的镜像

保存配置

  • 刚才做的配置都存放在devcontainer.json和Dockerfile文件中了,现在的问题是:如果后面新建一个codespace的时候,还能用这个配置吗?总不能每创建一个codespace就配置一次吧
  • 保存配置的方法很简单:将devcontainer.json和Dockerfile文件也提交到GitHub仓库中即可,下次创建codespace的时候,就会根据这个配置新建容器
  • 咱们来试试,提交操作如下图

image-20220528195938802

  • 再次新建一个codespace
image-20220528200205072
  • 熟悉的操作,选好分支,点击Create codespace
image-20220528200316373
  • 等待连接的页面,显示正在构建镜像,这就很像了,毕竟默认镜像是不需要构建的
image-20220528200535212
  • 进入vscode页面后,迫不及待的输入java -version,如下图,妥妥的1.8版本,存在仓库中的配置文件会参与容器镜像的构建,咱们的个性化配置可以长久保持并且始终生效了

  • 至此,咱们已经掌握了如何配置容器并使之生效,也知道了如何保存这些配置,以便在创建新的codespace时使用,然而,仅仅只是知道如何修改配置并不能给我们带来什么,接下来的文章中,咱们去做一些实用的配置,做到更加贴近真实开发,敬请期待吧,欣宸原创不会让您失望

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

标签:配置,Codespaces,codespace,服务器,docker,Dockerfile,devcontainer,个性化
From: https://www.cnblogs.com/bolingcavalry/p/17624475.html

相关文章

  • docker commit本地镜像发布至阿里云服务器
    一、镜像构成docker镜像文件是一层一层构建好的dokerpulltomcat拉取镜像时会发现docker镜像时一层层的下载dockerhistorytomcat 可以查看镜像构建的历史信息二、UnionFS文件系统UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件......
  • tb自带mqtt服务器源码学习
     tb自带的mqtt服务器,是基于netty实现的启动类是:MqttTransportService,启动的配置参数如下图: 编排处理channel中数据的handler的是 MqttTransportServerInitializercontext的isProxyEnabled默认为flase,sslHandlerProvider是null所以处理数据的handler如下图圈中的 说......
  • 恒创科技:如何搭建游戏服务器?有哪些操作步骤
    ​选择游戏服务器提供商为确保游戏服务器的稳定运行和及时响应问题,选择一个正规、靠谱的游戏服务器提供商非常重要。选择服务器操作系统根据不同游戏的需求,选择适合的操作系统,通常可选择Linux或WindowsServer操作系统。上传、安装游戏程序根据不同游......
  • 鸟哥的Linux私房菜服务器架设篇
    第十九章:主机名控制器DNS服务器*INTERNIC国际域名与数字分配机构下的一个组织;1、DNS:domainnamesystem域名系统    ip<->主机名的映射;2、FQDN:fullyqualifieddomainname完整主机名;3、六大领域名:com(公司、企业)、org(组织、机构)、edu(教育单位)、gov(政府单位)、ne......
  • 记一次重试机制和服务器响应慢导致的异常
    先说下异常是什么:正常情况下,我们的数据,axios返回后都是在res.data中的,于是项目里面常见的就是来个响应拦截,然后返回res.data。现在重试机制+服务器响应慢,会导致最后返回的数据直接就是res.data里面的内容了,你再.data,自然就有问题了解决:判断是否是axiosResponse对象,如果是,正常......
  • 搭建内网服务器
    luogu链接正文//httpServer.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<windows.h>#include<io.h>#include<bits/stdc++.h>//要使用网络编程,要包含系统给我们提供的头文件#include<winsock2.h>#pragmacomment(lib,"ws2_32.lib")usingn......
  • 游戏工作室如何使用代理服务器防封
    嘿,各位游戏工作室的小伙伴们!作为一名专业的程序员,我今天要和大家分享一个有关代理服务器的技巧,这个技巧可以帮助你们解决封号和封禁的问题。首先,我们得明白为什么要使用代理服务器来解决封号和封禁的问题。在我们搬砖的过程中,游戏运营商会对频繁请求的IP进行限制,导致我们的账号被封......
  • 解锁暑假云端生活:铁威马NAS助你打造个性化体验
    暑假转眼过半,大家一定度过一段非常美好的时光吧。朋友圈被去各地旅游的、看各种演唱会的、各种各样的观影读后感刷屏...生活很精彩,但如何高效地管理、享受和分享自己的文件、照片和影音内容成为困扰我们的难题。在这方面,铁威马NAS成为了越来越多人的首选。今天,我们将介绍铁威马NAS......
  • 内网服务器离线编译安装mysql5
    目录一.前言二.关于MySQL三.MySQL安装篇3.1部署环境3.2前期准备工具3.3挂载系统ISO镜像,配置yum源3.4安装mysql编译所需的依赖包3.5源码编译安装mysql5.73.6配置mysql四.MySQL调优篇4.1对MySQL进行安全设置4.2设置MySQL超时时间4.3MySQL配置文件优化参......
  • 恒创科技:香港服务器备案会通过吗?
    ​对于企业或个人来说,合规备案是网络运营的基本要求,也是保护自身权益的重要举措。以下内容围绕备案展开话题,希望为您解开疑惑。香港服务器备案会通过吗?目前,香港服务器无法备案,这是由于国内管理规定的限制。在备案申请过程中,需要绑定国内大陆服务器IP,而香港服务器IP......