拉取github代码
找个文件夹Git Bash
# 将代码拉到本地
git clone https://github.com/oceanbase/miniob -b miniob_test
利用Dockerfile构建
用powershell运行
#到存放刚下载代码的文件夹(填写自己存放的路径)
cd /xxx/xxx
# build
docker build -t miniob .
build的时候有时候可能需要科学上网,也可以试试手机热点
镜像包含:
- jsoncpp
- google test
- libevent
- flex
- bison(3.7)
- gcc/g++ (version=11)
- miniob 源码(/root/source/miniob)
docker中在/root/source/miniob目录下载了github的源码,可以根据个人需要,下载自己仓库的源代码,也可以直接使用git pull 拉取最新代码。 /root/source/miniob/build.sh 提供了一个编译脚本,以DEBUG模式编译miniob。
拉取Docker仓库
在此之前先启动Docker Desktop
docker pull oceanbase/miniob:latest
运行Docker
下载并启动miniob镜像,privileged 参数是为了方便在容器中进行调试。
docker run -d --name miniob --privileged oceanbase/miniob
进入到容器并进行开发
docker exec -it miniob bash
这个命令可以在终端上执行多次,开启多个窗口方便操作
建议
1.将代码放在自己的电脑上,Docker仅作为一个开发环境,启动镜像时这么做
docker run -d --name miniob --privileged -v $PWD/miniob:/root/miniob oceanbase/miniob
其中
-v $PWD/miniob:/root/miniob
是说将本地的$PWD/miniob
目录映射到容器中的/root/miniob
目录,这里假设$PWD/miniob
是你本地代码存放的位置,需要按照实际目录来调整。代码放在自己的电脑上,好处是如果容器出现什么异常,自己最重要的数据不会丢失。
2.启动镜像时忘记增加一些参数,但是又不想重新创建怎么办?
有时候启动镜像时(docker run),忘记增加一些参数,比如 privileged
,但是又在容器中做了很多操作,对环境做了调整,不希望启动全新的容器,可以这么做:
提交当前的容器,创建新的镜像
docker commit -m 'commit message' -t miniob:vx miniob
docker stop miniob
docker rm miniob
启动新的镜像
docker run -d --name miniob xxxx miniob:vx
参数中 miniob:vx 中的vx 是一个版本号,你可以自己设置,每次使用不同的名字即可。
官方文档出处:Windows 使用Docker开发MiniOB - MiniOB