欢迎访问我的博客,同步更新: 枫山别院
08-Docker
Sail可以被认为是Docker工具链的包装器,它专门用来管理开发环境。
它以元数据和标签的形式将大部分状态存储在Docker守护程序中。
不可变性
Sail鼓励以易于共享和迭代的方式明确描述您的开发环境的工作流程。
如果要对环境进行更改,就应修改hat或项目的Dockerfile。
定义项目开发环境
项目可以通过一个.sail/Dockerfile
配置文件来定义开发环境,如果在项目中没有找到.sail/Dockerfile
,那么就会使用codercom/ubuntu-dev
作为基础镜像。
在自定义项目环境时,dev容器必须是codercom/ubuntu-dev
的祖先才能拥有正确的依赖关系设置。
构建项目的镜像时,将会把项目的根目录作为构建的根目录,实际上是调用了下面的构建命 令:
docker build -f $project_root/<org>/<repo>/.sail/Dockerfile $project_root/<org>/<repo>
容器权限
本地的当前用户将映射到开发环境中名为user的用户。这意味着容器内的文件跟您在本地环境具有相同的权限。
Sail在容器内使用user
账户,不是root
,因为:
- root账户对许多工具不太友好。
- 大多数开发人员习惯于非root用户和使用sudo
容器的命名
在Docker中容器被命名为<org>_<project>
格式,但是在Sail中是<org>/project
网络
为了尽量让您有本地开发的环境体验,Sail尽可能使用docker宿主机网络。这就是说,如果你在Sail中的网络服务绑定到了8080端口,那么在你本地的浏览器中可以直接访问127.0.0.1:8080
。
在Mac上,Docker不支持使用宿主机网络,所以Sail在Mac上的宿主网络不好使。Sail计划在未来的版本中解决这个问题。
Dockerfile 最佳实践
在Dockerfile最佳实践,你可以参考如何正确构建和编写项目以及Dockerfiles。