搭建docker开发环境 ⇧
- 兼容
Windows 11、macOS、Linux
环境分两种
生产环境 ⇧
- 一般使用
Linux服务器(包括买云服务器) - 关闭
debug端口 - 使用
log日志进行排错 - 环境变量 举例:
RAILS_ENV=production - 编辑器:
vi或者vim,推荐nano Shell:bash或者sh
开发环境 ⇧
- 一般使用
Windows或者macOS - 开启
debug端口 - 使用
log或者断点进行排错 - 环境变量 一般不设置,默认:
development - 编辑器:
VSCode或者Jetbrains全家桶 Shell:zsh或者fish
为了减少环境不一致带来的bug,确保生产环境和开发环境一致,需要使用
Docker
Docker 优缺点对比 ⇧
优点
- 在
Windows里运行Linux容器,开启WSL2 - 在
macOS里运行Linux容器 - 在
Linux里运行Linux容器 - 在所有操作系统重用同一套环境
缺点
- 需要了解容器的概念
- 需要做端口映射
- 需要做数据卷映射
- 需要会
Linux命令 - 占用内存和硬盘
Docker + VSCode ⇧
- 安装
Docker DeskTop客户端Win11开启WSLmacOS版本10.15+,不可安装VirtualBoxLinux内核3.10+
- 给
Docker加速 - 安装
VSCode- 安装
Dev Containers插件
- 安装
- 使用模板代码 oh-my-env
- 下载后删除
.git使用 Docker安装成功后,请在命令行运行docker network create network1以防报错- 输入
reopen in container回车
- 下载后删除
- 测试命令是否可用
- 新建终端,输入版本检查命令
- 确保
ruby、bundle、irb、node、npm等命令可用
配置
docker.desktop@v4.89.0docker@29.7.2的Docker Engine
Configure the Docker daemon by typing a JSON Docker daemon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18"builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "debug": false, "experimental": false, "insecure-registries": [ "docker.mirrors.ustc.edu.cn" ], "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn/", "https://o3b9ba2s.mirror.aliyuncs.com", "https://reg-mirror.qiniu.com", "https://hub-mirror.c.163.com/" ] }
oh-my-env ⇧
oh-my-env 文件预览 ⇧
.devcontainer/Dockerfile镜像
|
|
.devcontainer/devcontainer.json
|
|
oh-my-env 下载安装 ⇧
- 下载后删除
.git使用VSCode打开 - 按
ctrl shift P输入reopen in container选择后进入自动构建Linux镜像,等待 - 可以关闭 第一个终端 ‘开发者容器’,也可以开着看日志
- 点击
+打开新终端,进入已经配置好的zsh终端环境 - 在终端输入
pwd查看当前目录/workspaces/oh-my-env-2,说明已经进入了一个Linux环境 - 在终端输入
uname -a查看当前Linux环境版本信息 - 在终端输入
echo $0查看Shell信息/bin/zsh
oh-my-env 检查已安装软件版本 ⇧
在终端输入
rvm --version查看为rvm 1.29.12- 激活
ruby输入命令:rvm use 3,可以看到Using /usr/local/rvm/gems/ruby-3.0.0 ruby --version版本为ruby 3.0.0p0bundle --version版本为Bundler version 2.2.3irb --version版本为irb 1.3.0irb --version版本为3.2.3
node相关
nvm --version查看为0.39.1- 安装
node@20:nvm install 20.19.1,使用nvm use 20.19.1 npm --versionyarn --versionpnpm --version
重新打开 oh-my-env 环境 ⇧
可以关闭后,再打开,注意查看最近项目
xxx [开发容器]
- 可以打开容器项目文件,
reopen容器oh-my-env - 也可以打开新窗口,在最近列表中找到带有
xxx [开发容器]的项目打开
oh-my-env 环境说明 ⇧
工作空间
oh-my-env会自动映射为workspaces/oh-my-env- 该目录里的文件是系统和容器 内外共享 的,由于是
ntfs,性能一般 temp目录可作为文件中转
- 该目录里的文件是系统和容器 内外共享 的,由于是
- 提前另外准备好了
~/repos目录,该目录是 容器专属 的,性能较好- 默认会在
~/repos中工作 - 需要共享时才会用到
workspaces/oh-my-env/temp目录 cd ~/repos或者cd root/repos- 在
docker deskop的数据卷中可以查看
- 默认会在
持久化
- 在
Ctrl + Shift + P弹出框内输入rebuild container相当于 重装系统 - 重新构建镜像后,未持久化的目录都会删除
- 只有
mounts中的目录和oh-my-env目录会被保留- 会被持久化到数据卷中,不会随容器重启或重建而消失
.devcontainer/devcontainer.json
|
|
- 需要自定义持久化的,双手也可以添加到
mounts中
oh-my-env 环境功能 ⇧
现有功能
archlinuxzsh已配置终端,相当于bashfzf索引当前目录下所有文件,可模糊查找,只可以找到文件目录路径,该命令无法打开- 使用自定义脚本,操作打开目录或者文件
vi ~/.bashrc - 命令
f使用默认的editor打开文件 - 命令
fd打开文件所在的目录 - 命令
j会用fzf打开所有打开过的目录,可快速查找,回车可进入该目录 - 命令
jj反悔重新查找
- 使用自定义脚本,操作打开目录或者文件
rvm + ruby + gem + bundlenvm + node + pnpmgo- 各种国内加速
- 其他多余的已删除
docker in docker- 使用命令
dockerd来启动 - 新打开一个终端,输入
docker ps查看运行的镜像 - 可运行
docker run hello-world成功显示Hello from Docker! chezmoi可管理所有配置
如何自定义
- 在系统命令行创建网络
docker network create network1运行这个命令才能保证reopen不报错- 第一次成功,重复运行命令报错,但不影响功能
- 打开
.devcontainer/Dockerfile - 用
RUN指令来添加你想要添加的依赖- 如
RUN yes | pacman -S fish - 然后
rebuild container即可 - 其他例如
RUN npm i -g http-server方便扩展
- 如
- 更多功能可查看 oh-my-docker
如何让容器与宿主机共享 ssh 认证信息
oh-my-env 工作流 ⇧
初始工作配置各种文件:拷贝配置
-
工作目录操作
cd ~/repos或者cd /root/repos或者j repos- 使用
code xxx-project-name打开新的IDE窗口,可以把旧的关了 - 新建
mkdir xxx-project-name在用VSCode打开 - 删除
rm -rf xxx容器自动清除数据卷
备份文件
- 删除镜像,还原备份
- Docker 安装成功后,请在命令行运行
docker network create network1以防报错 38eda56ac8822aaf9fa4d1331301376acb31d8e7e0d04631e4e00c255428d4cb
·完待续·
参考文章
- 无
相关文章
- 作者: Joel
- 文章链接:
- 版权声明
- 非自由转载-非商用-非衍生-保持署名