欢迎访问我的博客,同步更新: 枫山别院
04-项目
project
Sail的核心概念之一是project。每个Sail项目就像是独自占有一个机器,这个机器上只有该项目的依赖和配置。每个Sail项目的开发环境都事先被项目所有者配置好了,因此,你可以更快速的开始贡献代码。
就像是项目的核心开发给您配置了一个全新的Linux机器一样,他们给你安装好了编程语言和依赖,项目所需的配置也帮您设置好。VSCode也帮您安装了,并且需要的VSCode插件也有。源代码也clone下来了。so,你可以立刻愉快的贡献代码了。
一个Sail项目就是一个已经配置好的干净的开发环境。除此之外还有一个好处,这个开发环境可以随时丢弃不用,你完全可以重新创建一个一样的环境。
依赖和配置
您需要在源码仓库的根目录下创建一个.sail/Dockerfile
文件,来明确项目需要哪些依赖。Sail会根据您的配置文件创建一个容器,然后在容器中运行您的开发环境。
如果一个项目没有.sail/Dockerfile
文件,Sail会尝试推断项目使用的语言,如果能推断出项目的语言,就会从codercom docker hub中拉取该语言的Docker基础镜像。如果无法推断出项目语言,或者镜像库中没有该语言的基础镜像,那么
就使用codercom/ubuntu-dev镜像作为项目的环境来运行该项目。
持久化
由于容器中的文件系统是临时的,Sail会把clone下来的项目仓库放在本地主机中Sail的$project_root
下,并把它挂载到容器中。
因为项目是挂载到容器中的,所以删除容器不会删除项目文件,同时您可以随意操作容器外部的项目文件。
本地主机
$project_root
是一个环境变量,配置在Sail的全局配置文件中,配置文件默认放在~/Projects
。项目通常放在$project_root
下,目录结构如下:
$project_root/<org>/<repo>
例如,你要使用一个新的Sail环境,
sail run cdr/sail
它将被clone到$project_root/cdr/sail
。
容器内
默认的,项目会被挂载到容器的~/<repo>
下。为了支持一些特殊的语言,比如Go,挂载目录是可以通过项目下配置文件.sail/Dockerfile
的project_root
标签配置的。
例如:
LABEL project_root "~/go/src/"
这将会把本地主机的$project_root/<org>/<repo>
目录挂载到容器的~/go/src/<repo>
目录下。
配置
项目的配置是通过Dockerfile的命令来完成的。
例如,如果您的项目将autotools作为依赖项,你可以通过.sail/Dockerfile
配置来安装到环境中,如下:
FROM codercom/ubuntu-dev:latest
RUN apt-get update && apt-get install -y \
autoconf \
automake \
libtool
为了明确像挂载目录等等配置,Sail拓展了Dockerfile语法,我们将在《标签》中详细介绍这些内容。
作为一个开发者,你可以想在项目中引入自己的配置和工具。你可以通过hat Dockerfile轻松的拓展项目的开发环境
。
支持的版本管理系统
当前只支持git
网友评论