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 链接使用

相关推荐
yiyaozjk9 分钟前
Go基础之环境搭建
开发语言·后端·golang
呆萌很16 分钟前
【GO】字符串练习题
golang
luom010220 分钟前
使用 Docker 部署 RabbitMQ 的详细指南
docker·容器·rabbitmq
王威振的csdn1 小时前
利用 iptables 实现 IP 透明转发:解决 Docker 容器 IP 无法访问的问题
网络协议·tcp/ip·docker
toradexsh1 小时前
基于 NXP iMX8MP ARM平台安装测试 Openclaw
linux·docker·arm·nxp·openclaw
阿望要努力上研究生2 小时前
Docker入门常用指令和Docker概念
运维·docker·容器
战南诚2 小时前
docker的使用技巧
运维·docker·容器
1-1=03 小时前
Visual Studio Code 简介
ide·vscode·编辑器
無限神樂3 小时前
docker,docker compose,k8s之间的区别
docker·容器·kubernetes
Xu_youyaxianshen3 小时前
[特殊字符] Docker 小白极速入门笔记
linux·docker