docker 部署 vscode 远程开发环境(Go,Java)

1. 前言:

构建一个远程开发环境,一般来说开个linux云服务器是最好的,但是这里使用 docker 来搭建,docker 意味着更省资源,可以直接在一个 linux 主机上去设置

准备 一个安装了 docker 的主机,最好是linux,有公网 ip 的

2. 镜像构建

首先我们需要写一个 dockerfile

vim dockerfile
FROM golang:1.21

# 更新包源并安装必要的工具
RUN apt-get update && apt-get install -y \
    sudo \
    vim \
    openssh-server \
    openjdk-11-jdk \
    && apt-get clean

# 创建一个用户以便通过 SSH 进行远程连接
RUN useradd -m -s /bin/bash devuser && echo "devuser:qwe41235" | chpasswd && adduser devuser sudo

# 设置 SSH 服务器
RUN mkdir /var/run/sshd
RUN echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
RUN echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config

# 设置环境变量
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV GOROOT=/usr/local/go
ENV GOPATH=/go
ENV PATH=$GOROOT/bin:$GOPATH/bin:$JAVA_HOME/bin:$PATH

# 暴露 SSH 端口
EXPOSE 22

# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

这里我们最重要的是选一个基础镜像,这里使用的是 Go 的一个工具链镜像,这个镜像除了 Go 本身的依赖,本身就是一个 debian 的镜像,大致相当于docker 开了一个 linux 虚拟机,不过这个镜像一般足够精简,打包之后一般不会大于 1 个 g

重要软件

  1. Go 依赖
  2. Java 依赖
  3. SSH Server : 用于远程连接

然后打包镜像

docker build -t wnnzer/vscode:2.0 .

3. 启动容器

这里我们也可以把工作目录或者根目录挂载出去,用于数据持久化,但是这种开发环境一般不建议安装软件,只建议开发使用,只挂载工作目录最好

docker run -p 64422:22  -v  /volume1/docker/vscode-dev:/home --name vscode-dev wnzzer/vscode:2.0 

这里记得把防火墙的端口开开,如果和我一样就开 64422,可以根据 -p 的参数进行修改

4. vscode连接

在这里插入图片描述
在下载完 remote ssh之后可以在找个配置文件配置,不同系统配置文件不同,理论来说,随便一个即可

在这里插入图片描述
在这里插入图片描述

然后点击链接即可

5. 开发测试

  1. go 测试
package main

import "fmt"

func main() {
    fmt.Println("Hello world") 
}

在这里插入图片描述
2. java 测试
在这里插入图片描述
正常使用!

5. 总结:

如果装其他插件也是类似的思想,比如 idea 远程开发插件,说实话,idea 用 jre 实现的转发服务器,占资源太多并不好用,vscode 远程开发相对省资源的

核心思想就是虚拟机的思路,装上自己的工具,和 ssh 服务器(为了安全可以考虑密钥),然后使用 vscode 链接使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

几何完备的3D分子生成/优化扩散模型 GCDM-SBDD - 评测

GCDM 是一个新的 3D 分子生成扩散模型,与之前的 EDM 相比,GCDM 优化了其中的图神神经网络部分,使用手性敏感的 SE3 等变神经网络 GCPNET 代替了 EDM 中的 EGNN,让节点间消息传递、聚合根据手性不同而进行。本文对 GCDM-SBDD&#…

制造企业数字化转型顶层规划案例(55页满分PPT)

基于集团的战略和运营特点,数字化转型应如何考虑? 在集团的战略和运营特点基础上进行数字化转型,需要实现业务多元化,整合资源和流程,推动国际化拓展,实施差异化战略,并通过数据驱动决策&#…

WPF开发一个语音转文字输入软件(一)

本文探索的Demo地址: https://gitee.com/lishuangquan1987/try_win32 https://github.com/lishuangquan1987/try_win32 后续会把他当做一个开源项目来维护 需求 开发一个软件,能够让用户说话来进行文字输入。具体如下: 像腾讯电脑管家那样的悬浮球悬浮…

Py之pygetwindow:pygetwindow的简介、安装和使用方法、案例应用之详细攻略

Py之pygetwindow:pygetwindow的简介、安装和使用方法、案例应用之详细攻略 目录 pygetwindow的简介 pygetwindow的安装和使用方法 pygetwindow的案例应用 1、使用了Windows系统打开了记事本应用程序,其窗口标题为“无标题 - 记事本” 2、Window对象…

STM32学习笔记---RTC

目录 一、什么是RTC 二、如何配置RTC 1、标准实时时钟部分(万年历部分) 1.1 时钟源分类 1.2 RTC时钟源的选择 1.3 精密校正 1.4 异步7位预分频器 1.5 粗略校正 1.6 同步15位分频 1.7 日历寄存器 1.8 RTC的初始化与配置 1.9 程序设计 2、闹钟部分 2.1 闹钟的初始化…

Python酷库之旅-第三方库Pandas(155)

目录 一、用法精讲 706、pandas.DatetimeTZDtype类 706-1、语法 706-2、参数 706-3、功能 706-4、返回值 706-5、说明 706-6、用法 706-6-1、数据准备 706-6-2、代码示例 706-6-3、结果输出 707、pandas.Timedelta.asm8属性 707-1、语法 707-2、参数 707-3、功能…

信息学CCF CSP-J/S 2024常见问题汇总,低年级考生重点关注

摘要 随着2024年CSP-J/S初赛的临近,各省报名要求细则陆续公布。为了帮助广大考生和家长准确了解各省政策,自主选拔在线团队特为汇总整理全国各省CSP-J/S2024认证相关问题,希望可以帮助各位考生更好的备考! CCF CSP-J/S 2024 认证…

Android平台RTSP|RTMP播放器PK:VLC for Android还是SmartPlayer?

好多开发者,希望在Android端低延迟的播放RTMP或RTSP流,本文就目前市面上主流2个直播播放框架,做个简单的对比。 VLC for Android VLC for Android 是一款功能强大的多媒体播放器,具有以下特点和功能: 广泛的格式支持…

PDF-XChange PRO v10.4.2.390 x64 已授权中文特别版

PDF-XChange PRO是一款功能强大的PDF编辑和查看软件,PDF-XChange PRO 一个多合一的PDF解决方案。这是Tracker Software的三个最佳应用程序的套件:PDF-XChange Editor Plus,PDF-Tools和PDF-XChange Standard。使用 PDF-XChange Editor Plus&am…

vector的深入剖析与底层逻辑

前言: 上篇我们谈到vector的概念,使用,以及相关接口的具体应用,本文将对vector进行深入剖析,为读者分享其底层逻辑,讲解其核心细节。 上篇链接: 初始vector——数组的高级产物-CSDN博客 一.…

CDGA|数据治理:如何让传统行业实现数据智能

在当今这个数字化时代,数据已成为推动各行各业转型升级的关键力量。对于传统行业而言,如何从海量、复杂的数据中挖掘价值,实现“数据智能”,成为了提升竞争力、优化运营效率、创新业务模式的重要途径。本文将探讨数据治理如何助力…

【文献及模型、制图分享】干旱区山水林田湖草沙冰一体化保护与系统治理——基于土地退化平衡视角

文献介绍 目标明晰、统筹兼顾、干预适度是山水林田湖草沙冰一体化保护与系统治理的客观要求。基于土地退化平衡(LDN)视角,构建涵盖双重对象、双重法则、双重原则、指标体系、价值取向的理论框架,并以天山北坡城市群为例&#xff…

Flume抽取数据(包含自定义拦截器和时间戳拦截器)

flume参考网址:Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了https://flume.liyifeng.org/?flagfromDoc#要求: 使用Flume将日志抽取到hdfs上:通过java代码编写一个拦截器,将日志中不是json数据的数据过滤掉&#xf…

模拟退火算法最常见知识点详解与原理简介控制策略

章节目录 模拟退火算法简介与原理 算法的基本流程与步骤 关键参数与控制策略 模拟退火算法的应用领域 如何学习模拟退火算法 资源简介与总结 一、模拟退火算法简介与原理 重点详细内容知识点总结 1. 模拟退火算法简介 模拟退火算法(Simulated Annealing, SA&#x…

blender分离含有多个动作的模型,并导出含有材质的fbx模型

问题背景 笔者是模型小白,需要将网络上下载的fbx模型中的动作,分离成单独的动作模型,经过3天摸爬滚打,先后使用了blender,3d max,unity,最终用blender完成,期间参考了众多网络上大佬…

Spring Boot框架下大创项目流程自动化

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理大创管理系统的相关信息成为必然。开发合适…

DETR[端到端目标检测](论文复现)

DETR[端到端目标检测](论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 DETR[端到端目标检测](论文复现)概述模型主体框架演示效果核心逻辑使用方式部署方式数据准备概述 在目标检测需要许多手工设计的组件,例如非极大值抑制(NMS),基于人工经验生成的先验…

【Trulens框架】用TruLens 自动化 RAG 应用项目评估测试

前言: 什么是Trulens TruLens是面向神经网络应用的质量评估工具,它可以帮助你使用反馈函数来客观地评估你的基于LLM(语言模型)的应用的质量和效果。反馈函数可以帮助你以编程的方式评估输入、输出和中间结果的质量,从而…

Gin框架操作指南10:服务器与高级功能

官方文档地址(中文):https://gin-gonic.com/zh-cn/docs/ 注:本教程采用工作区机制,所以一个项目下载了Gin框架,其余项目就无需重复下载,想了解的读者可阅读第一节:Gin操作指南&#…

SICK系列激光雷达单点测距仪DT80-311111+SIG200配置和通信

文章目录 一、硬件连接与SOPAS连接测距仪二、从SOPAS读取数据三、通过JSON获取数据1. 使用Postman测试接口2. 通过代码实现 一、硬件连接与SOPAS连接测距仪 首先硬件设备连接如下: 电源厂家应该是不提供,需要自行解决。 安装完成后需要使用sick的SOPAS…