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

1. 前言:

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

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

2. 镜像构建

首先我们需要写一个 dockerfile

shell 复制代码
vim dockerfile
shell 复制代码
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 : 用于远程连接

然后打包镜像

shell 复制代码
docker build -t wnnzer/vscode:2.0 .

3. 启动容器

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

shell 复制代码
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 测试
java 复制代码
package main

import "fmt"

func main() {
    fmt.Println("Hello world") 
}
  1. java 测试

正常使用!

5. 总结:

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

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

相关推荐
Wang's Blog1 小时前
Go-Zero 项目开发43:基于 Filebeat 收集各个服务的日志信息
开发语言·golang·go-zero·filebeat
W_326003 小时前
VSCode 进阶
c语言·vscode
晚风吹长发4 小时前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
ji_shuke8 小时前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
FellAveal9 小时前
【Go语言入门学习笔记】Part19.速率控制、原子计数器、互斥锁(Mutex)、状态协程
笔记·学习·golang
洛兮银儿9 小时前
VScode注释快捷键的修改
ide·vscode·编辑器
霁月的小屋11 小时前
Docker 工程化实践(六):Docker Compose 管理多容器应用
运维·docker·容器
江湖有缘11 小时前
Docker实战 | 使用Docker部署EasyNode服务器面板工具
服务器·docker·容器
心机之蛙qee11 小时前
Docker Compose 多容器编排
java·docker·容器
AI大佬的小弟12 小时前
私有化 Dify 应用开发(1):Dify 入门|Docker 一键部署全流程
docker·大模型落地·ai 应用开发·dify 教程·私有化 ai 部署·docker 实战·开源 ai 平台