Sign inSign up

tonybian/workspace-in-docker

By tonybian

•Updated over 6 years ago

Image
0

384

tonybian/workspace-in-docker repository overview

                                       ##        .
                                 ## ## ##       ==
                              ## ## ## ##      ===
                          /___/ ===
                     ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
                          \______ o          __/
                           \   \        __/
                             \____\______/

⁠欢迎来到Tony的工作空间

⁠这是什么?

  • 专为DevOps人员设计的效率工具,旨在提高开发和文本处理的效率
  • 使用docker封装的workspace,包含vim-ide以及常用工具集
  • 支持python、go、shell的代码高亮, 语法检查,格式化, 自动补全, 查看文档、定义、引用, 以及REPL⁠等功能
  • 支持markdown、json、yaml、Dockerfile等文本格式的代码高亮, 语法检查,格式化等功能

⁠这里有什么?

  • 预装了pyenv⁠、pipenv⁠、python2.7、python3.6的python开发环境
  • 预装了gvm⁠、glide⁠、go1.13的go开发环境
  • 基于k-vim⁠做了大量扩展和调整的vim-ide
  • 支持切换SpaceVim⁠作为vim-ide的配置
  • 支持使用自定义配置作为vim-ide的配置
  • 预装了docker-client、docker-compose、docker-tags、dive⁠等docker管理工具
  • 预装了git、git-flow⁠等代码版本及开发工作流程管理工具
  • 对以上工具进行了封装,实现项目隔离、规范项目目录结构及简化开发流程
  • 预装了常用的linux系统工具、网络工具和包管理工具.

⁠核心设计

  • workspace的四层抽象

    • HOST: dockerd运行环境, workspace最底层
    • DEV: 开发专用环境, 在HOST中使用 ws dev [proxy] 命令进入, 命令行提示符为蓝色#, 启用proxy时命令行提示符为蓝色背景#
    • VENV: python/go虚拟环境, 在DEV中使用 pe-i、pes、go-i、gos 等命令进入, 命令行提示符为天蓝色$
    • FAT: 测试专用环境, 在VENV中使用 ws fat [EXPOSE] 命令进入, 命令行提示符为黄色&
  • 可移植性

    • 使用docker封装
    • 充分利用--volume功能解耦并保留workspace状态
    • 仅依赖dockerd
  • 通用性和性能

    • 一种编辑器搞定多种语言和文本格式的开发、编辑需求
    • 基于vim实现ide的功能, 同时获得高于常规ide的性能

⁠命令行工具

  • ws⁠: workspace管理入口
  • pye⁠: python开发任务管理入口
  • goe⁠: go开发任务管理入口
  • gite⁠: git相关命令入口
  • gh-md-toc: 对gh-md-toc⁠的封装, 可对指定目录下的所有markdown格式文件生成`TOC
  • vimdiff: 对vimdiff及vim-dirdiff⁠的封装, 可比对指定目录的差异
  • guide: 查看使用手册(施工中……)
  • welcome: 查看欢迎界面
  • 更多工具请查看项目根目录下的scripts目录

⁠安装环境要求

  • 支持macOS(仅对10.14.x版本做了测试)
  • 支持Ubuntu(仅对18.04版本做了测试)
  • 使用非root用户
  • 预装docker-ce、curl、git

⁠安装方法

# 下载项目代码, 此处强制要求项目目录为${HOME}/workspace/workspace-in-docker
git clone https://github.com/TonyBian/workspace-in-docker.git ${HOME}/workspace/workspace-in-docker


# 初始化HOST workspace
# 安装字体, 并生成可随处执行的ws命令以替代admin.sh
bash ${HOME}/workspace/workspace-in-docker/admin.sh init


# 初始化vim-ide, 可选k-vim、spacevim以及自定义配置

## 选择k-vim时, 首次执行将根据vim配置下载并安装插件, 耗时较长
## 完成初始化后再次执行将检查并升级已安装的插件

## 选择spacevim时, 首次执行将下载SpaceVim项目及dein插件管理工具
## 完成初始化后再次执行将升级SpaceVim
## 在DEV workspace中, 首次打开vim将根据配置下载并安装插件

## 选择custom时, 需要在DEV workspace中手动根据vim配置安装插件
ws init {k-vim|spacevim|custom}

⁠使用方法

# 修改自定义配置
# USER_NAME及USER_EMAIL: 修改git全局配置及源码文件的Author信息
# HUB_USER: 当使用自定义docker image时请修改此参数
# HARBOR: 此参数不为空时, DEV workspace容器将挂载指定harbor地址的证书, 以获取访问指定harbor的权限
# GIT_PUSH_DEFAULT: 详见https://git-scm.com/docs/git-config#git-config-pushdefault
# PIP_TRUSTED_HOST: 指定pip源可信host
# PIP_INDEX_URL: 指定pip源
${HOME}/workspace/workspace-in-docker/ws.conf


# 进入DEV workspace, 可选使用代理翻墙
# 初次使用时需要下载所需docker image, 耗时较长
ws dev [proxy]


# 创建python/go项目, 进入VENV workspace, 并修改$HOME为项目目录
# 如果指定了当前没有安装的版本, 将提示是否自动安装, 安装可能耗时较长
# python项目目录为/root/workspace/py-projects/<project_version>/<project_name>
# go项目目录为/root/workspace/go-projects/<project_version>/<project_name>
# 初始化项目的git仓库, 并创建.gitignore
# 初始化包管理文件

## python项目
pe-i <project_name> [project_version]

## go项目
go-i <project_name> [project_version]


# 切换到已存在VENV workspace

## python项目
pes <project_num>

## go项目
gos <project_num>


# 包管理
# 需要先切换到项目对应的VENV workspace
# 可使用pye及goe命令获取详细信息

## python项目
pye

## go项目
goe


# vim-ide
# 配置文件放在项目目录下的vim.conf目录中
# 介绍两个使用k-vim配置时的实用功能
# 基于vim8.1的内置terminal功能实现

## REPL, 交互式编程
## 详见https://github.com/sillybun/vim-repl
## 键位映射
let g:sendtorepl_invoke_key = "ww"
nnoremap rr :REPLToggle<Cr>

tnoremap <C-h> <C-w><C-h>
tnoremap <C-j> <C-w><C-j>
tnoremap <C-k> <C-w><C-k>
tnoremap <C-l> <C-w><C-l>

## 以指定高度开启内置terminal
## 键位映射
nnoremap tm :call OpenTerminal()<cr>

## 更多vim配置请阅读vim.conf下的配置文件

⁠trouble shooting

  • vim界面状态栏乱码或其他显示异常

  • vim自动补全失效或报错

    • vim的使用依赖于环境变量, 当切换到VENV workspace时,需要重新启动vim使环境变量生效
  • 修改vim配置后配置失效

    • vim的配置文件在项目中vim.conf目录下, 通过--volume的方式挂载到容器中, 直接修改该目录下的配置文件会导致挂载出现问题
    • 可以通过修改/root目录下的.vimrc、.vimrc.bundles、.SpaceVim.d/来调整vim配置
  • vim启动较慢

    • vim每次启动时需要加载插件和配置
    • 最佳实践是启动vim之后, 一切文件操作都在vim内部进行, 充分利用window/tab/buffer及文件管理插件, 避免频繁的启动和关闭vim
    • 当需要切换VENV或python版本时, 必须在切换后重新启动vim使环境变量生效
    • 当需要同时在多个VENV下工作时, 最好每个VENV使用一个独立的终端窗口
  • vim使用hjkl移动光标导致cpu使用率升高,性能下降

Tag summary

Content type

Image

Digest

Size

435.8 MB

Last updated

over 6 years ago

docker pull tonybian/workspace-in-docker:stack