docker中运行codeserver实现云编程

本文最后更新于1 分钟前,文中所描述的信息可能已发生改变。

1、什么是code-server?

code-server 是一个可以在远程服务器上运行 VS Code 的工具

2、code-server 的目标是什么?

code server 的目标是为开发者构建一个便捷统一的开发环境,让开发者能从任意设备、任意位置通过浏览器来进行代码的编写。从而免去了常规的 IDE 开发流程中的环境搭建的问题。

3、基于docker,容器化运行code-server

一、安装docker
二、生成自定义code-server镜像
因为使用code-server的初衷是在任何地方都能写python代码,所以需要将python环境集成进去,就想着自己基于centos7的基础镜像做一个整合了自己需要的环境的remote vscode环境。
1)下载code-server

centos安装包github地址:https://github.com/coder/code-server/releases 目前最新版本为:3.12.0所以下载 code-server-3.12.0-amd64.rpm2

2)寻找合适的centos镜像

https://hub.docker.com/_/centos 这里使用centos:73

准备python3.7

压缩包下载地址: https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tar.xz4 将准备好的pythoncode-server的文件放在dockerfile同目录下新建Dockerfile

bash
vim dockerfile

添加如下内容:

Dockerfile
FROM centos:7
#复制code-server的安装文件到 /home 目录下
COPY ./code-server-3.12.0-amd64.rpm /home
#复制python文件到 /usr/local/python3目录下
COPY ./Python-3.7.12.tar.xz /usr/local/python3/Python-3.7.12.tar.xz
#安装python需要的依赖环境
RUN yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y
#设置当前目录为/usr/local/python3
WORKDIR /usr/local/python3
#安装python
RUN tar -xvJf Python-3.7.12.tar.xz
WORKDIR /usr/local/python3/Python-3.7.12
RUN ./configure --prefix=/usr/local/python3 && make && make install
#备份python 为pythonbak   链接新安装的python3 到python   pip3到pip
RUN mv /usr/bin/python /usr/bin/pythonbak && ln -s /usr/local/python3/bin/python3.7 /usr/bin/python && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
#替换yum文件的python为python2
RUN sed -i '1s/python/python2/g' /usr/bin/yum && sed -i '1s/python/python2/g' /usr/libexec/urlgrabber-ext-down
#安装code-server
RUN rpm -i /home/code-server-3.12.0-amd64.rpm
#安装code-server需要的openssl依赖
RUN yum install openssl -y
#删除复制及解压的文件及目录,减小镜像体积
RUN rm -rf /usr/local/python3/Python-3.7.2.tar.xz /home/code-server-3.12.0-amd64.rpm /usr/local/python3/Python-3.7.12
#暴露8080 端口
EXPOSE 8080
#设置当前的工作目录为下
WORKDIR /home/coder/workspace
#自定义登陆密码
ENV PASSWORD 123123123
#locale 设置中文,  user-data-dir 设置用户数据存储的目录,  auth设置登陆验证方式为password会使用环境变量中的 $PASSWORD 为密码,  config 设置配置文件的目录,  cert设置证书为空
ENTRYPOINT ["code-server","--locale","zh-cn","--host","0.0.0.0","--port","8080", "--user-data-dir", "/home/coder", "--auth", "password", "--config", "/home/coder/config/config.yaml", "--cert",""]
3)生成镜像

使用docker build命令根据Dockerfile生成镜像,默认自动存到本地镜像库

bash
docker build -t codeserver . -t 指定生成的镜像名称
4)运行镜像:

docker run -itd -p 8088:8080 -v $PWD/project:/home/coder --name codeserver codeserver -itd

  • -i 以交互模式运行容器,通常与 -t 同时使用;
  • -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -d 后台运行容器,并返回容器ID;
  • -p 端口映射 外部端口:容器端口
  • -v 映射目录到容器中 $PWD取当前目录的project目录映射为容器中的/home/coder
  • –name 设置容器运行时的名称
5)查看运行状态
bash
docker ps -a | grep codeserver
CentOS开启SSH远程root登陆
git提交了敏感信息如何回滚