日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

code block怎样导入整个文件夹_按需分配随时可用的在线开发环境:弹性容器+code-server踩坑记...

發(fā)布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 code block怎样导入整个文件夹_按需分配随时可用的在线开发环境:弹性容器+code-server踩坑记... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需求整理

微軟在19年的build大會上公開了Visual Studio Online,相當于把Visual Studio Code和我們需要的開發(fā)相關文件裝進了瀏覽器,隨時訪問。不過目前的公共預覽版還沒有提供在國內的服務器,定價上最基本的配置4核/8GB RAM/64GB HDD每活躍一小時需3.15元人民幣,待機一小時0.05元人民幣。自建服務器也必須跑在Azure上,也并不算便宜:Visual Studio Online 定價

社區(qū)也開發(fā)了相同功能的開源軟件:code-server。不過如果我們專程為這個需求分配一個開發(fā)機,即使是2核/4GB RAM/40GB SSD的基本機型,不打折時包年的費用也接近2000元人民幣。所以使用code-server,我們也必然需要實現(xiàn)按需分配。接下來我們就在阿里云上實現(xiàn)這個需求。

code-server用到了service worker,在不通過localhost訪問時,必須使用https協(xié)議。所以我們?yōu)榱藢崿F(xiàn)整個需求,必須用到阿里云的如下服務:

  • 一個已經備案的域名,如果用境外服務器的話域名可以不備案
  • 一個彈性公網IP,需要的時候申請下來,將一個二級域名http://code.example.com解析到該IP上
  • 容器鏡像服務,方便我們快速地使用打包好的code-server docker鏡像
  • 彈性容器實例ECI,這是最為經濟的算力資源,2核/4GB RAM每小時0.44元人民幣,4核/8GB RAM每小時0.88元人民幣,而且計價是精確到秒的。
  • 文件存儲服務NAS,我們之后需要將它作為NFS Volume掛載在ECI上,存儲開發(fā)常用資料。這部分需要長期運行,價格0.30元/GB/月。

實現(xiàn)我們想要的按需分配code-server的“算法”描述起來如下:

  • 準備階段
  • 準備code-server的鏡像上傳到阿里云容器鏡像倉庫,鏡像里需要有SSL證書相關服務
  • 申請好NAS實例
  • 需要真正使用時
  • 申請一個彈性公網IP x.x.x.x
  • 更新二級域名http://code.example.com的解析到x.x.x.x
  • 申請彈性容器實例,以準備好的docker image啟動,綁定彈性IP x.x.x.x
  • 啟動時執(zhí)行代碼,給二級域名http://code.example.com獲取SSL證書后,之后便可以啟動code-server了
  • 掛載NAS,阿里云這里應該是有些bug,啟動時掛載NAS容易使ECI無法正常啟動

docker鏡像準備

我們首先要準備一個幫助我們處理SSL證書的增強版code-server docker image。

一個思路是,code-server為我們提供了它的Dockerfile,我們可以對這個Dockerfile稍加修改,以滿足我們所要的功能??上У氖?#xff0c;我自己試了多次,即使不更改這個Dockerfile,也無法正確地生成docker image。會遇到這個問題:Failed to build docker image · Issue #1380 · cdr/code-server

于是我轉換了另一個解決方案,基于centos鏡像,在這個基礎上,下載code-server的Binary Release,布置好SSL證書相關軟件,這里選擇Let's Encrypt的Certbot。

基于此,準備好的Dockerfile如下(注意這個Dockerfile后面有更新):

FROM

更改工作目錄到這個文件夾后,制作docker image:

docker image build -t my-code-server:0.1 .

成功之后查看本地images,找到需要的ID

docker images

登錄阿里云的容器鏡像服務,這里我選擇離我最近的成都節(jié)點:

sudo docker login --username=mayundaddy registry.cn-chengdu.aliyuncs.com

tag并推送這個容器鏡像:

sudo docker tag [imageID] registry.cn-chengdu.aliyuncs.com/mayundaddy/code-server:0.1 sudo docker push registry.cn-chengdu.aliyuncs.com/mayundaddy/code-server:0.1

測試一下,我們手動做好其他部分的工作,啟動這個容器的時候,運行以下指令,成功之后就可以在任意設備上訪問了:

&&

不過這個方法相當于是每次啟動時都申請了一個新的SSL證書,Let's Encrypt對此是有頻率限制的,整個一級域名每周50個。如果啟動次數(shù)沒有那么頻繁,這個也能將就用了。我這邊后來為了解決這個問題,其實用了一個常在線的服務器不斷維系一個通用*.example.com的SSL證書并且在啟動時拷貝過來。

由此我更改了Dockerfile如下:

FROM

這個版本的Dockerfile不再需要處理certbot相關的SSL/HTTPS邏輯,構建起來也輕松許多。轉而在`run.sh`中處理一些簡單邏輯:

#!/bin/bash

阿里云API操作

既然Docker image已經構造好了,那么只需要調用阿里云的API,把其他步驟做好就是。由于我們改進了思路,所以到這一步還需要完成的任務就是:

  • 申請一個彈性公網IP x.x.x.x
  • 更新二級域名http://code.example.com的解析到x.x.x.x
  • 申請彈性容器實例,綁定彈性IP x.x.x.x,以準備好的docker image啟動,綁定彈性IP x.x.x.x

可以說比較簡單了,node.js實現(xiàn)如下:

const

執(zhí)行一下`node this.js`,很快一切都配置好了。不過域名解析還需要至多10分鐘生效。這段時間如果急著用,可以通過不安全的方式訪問https://IP開始使用。

云盤掛載

這一部分暫時還沒來得及測試,等搞定了回來補充

總結

以上是生活随笔為你收集整理的code block怎样导入整个文件夹_按需分配随时可用的在线开发环境:弹性容器+code-server踩坑记...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。