简化容器使用
项目描述
sugar
简化容器使用。
你可能想知道,为什么我需要一个新库来包装docker-compose或podman-compose,因为它们已经很简单易用了?
是的,它们确实简单易用,但如果你在命令行中需要指定一些额外的参数,例如 --env-file
、--project-name
、--file
等,每次编写可能非常繁琐。
在这种情况下,我们可以使用脚本或 make
吗?
是的,对于一个项目来说,这已经足够好了。但是,如果你维护或协作多个项目,这就像是一个模板。
此外,如果你维护了一些额外的脚本以提高你的容器堆栈,这些脚本也会像模板一样。
因此,这个项目的想法是组织你的容器堆栈,收集一些有用的脚本,并在配置文件中集中这些信息。因此,命令行将非常简单。
- 软件许可:BSD 3 条款
- 文档:https://osl-incubator.github.io/sugar
安装方法
$ pip install containers-sugar
功能特性
可用的 docker-compose 命令有
- build
- config
- create
- down
- events
- exec
- images
- kill
- logs
- pause
- port
- ps
- pull
- push
- restart
- rm
- run
- start
- stop
- top
- unpause
- up
- version
这些命令在主配置文件/插件中可用,因此无需指定任何额外参数即可访问。
对于额外的命令,我们将它们收集到一个名为 ext
的配置文件/插件中,因此您可以使用类似 sugar ext restart
的方式访问它们。
当前可用的 ext 命令有
- start ->
up
的别名 - restart -> 执行
stop
和up
如何使用它
首先,您需要将配置文件 .sugar.yaml
放置在项目的根目录中。以下是一个配置文件的示例
version: 1.0
compose-app: docker compose
default:
group: ${{ env.ENV }}
groups:
group1:
project-name: project1
compose-path:
- containers/tests/group1/compose.yaml
env-file: .env
services:
default: service1,service3
available:
- name: service1
- name: service2
- name: service3
group2:
project-name: null
compose-path: containers/tests/group2/compose.yaml
env-file: .env
services:
available:
- name: service1
- name: service3
使用示例
-
为 group1 构建默认服务(service1,service3):
sugar build --group group1
-
为 group2 构建所有服务(未定义默认服务):
sugar build --group group2
-
为 group1 构建所有服务(忽略默认服务):
sugar build --group group1 --all
-
启动 group1 的默认服务:
sugar ext start --group group1
-
重启 group1 的所有服务(忽略默认服务):
sugar ext restart --group group1 --all
-
重启 group1 的 service1 和 service2:
sugar ext restart --group group1 --services service1,service2
注意:如果使用:default: group: ${{ env.ENV }}
,则无需指定 --group <GROUP_NAME>
,除非您想使用默认组以外的组。