从docker-compose.yml生成初始化配置文件(systemd/Upstart)
项目描述
dc2service 工具根据单个 docker-compose YAML 输入文件生成 systemd/Upstart 的配置文件。
初始化类型会自动检测,但可以从命令行覆盖。
服务名称由 YAML 文件中所有服务的 container_name 条目确定。每个服务 必须 指定一个 container_name。
由于 docker-compose YAML 文件格式不允许额外的元数据字段,因此在 YAML 文件开头的两个注释条目被解析为描述和作者。
如果使用版本 2 YAML 文件格式,建议使用 ruamel.dcw 作为 docker-compose 的包装器,如果这样做,则不需要注释,并且可以在顶层 user-data 键下指定 author 和 description。
如果指定了外部端口(即形式为“ip:ip”),则将外部端口号扩展到描述中。
文件生成基于模板,可以轻松调整以满足您的需求。通过执行 dc2service templates 可以查看其位置。
Mongo DB 的版本 2 输入 YAML 文件示例
在版本 1 的 docker-compose.yml 文件中使用 ruamel.dcw,您可以将 author 和 description 作为普通键值对方便地设置,还可以指定环境变量的默认值。
version: "2" user-data: author: Anthon van der Neut <a.van.der.neut@ruamel.eu> description: mongo container env-variables: DOCKER_MONGO_PORT: 27017 DOCKER_MONGO_BASE_DIR: /data1/DB/mongo services: mongodb: container_name: mongo image: mongo:2.4 volumes: - ${DOCKER_MONGO_BASE_DIR}:/data/db ports: - ${DOCKER_MONGO_PORT}:27017
Mongo DB 的版本 1 输入 YAML 文件示例
作为版本 1 的 docker-compose.yml 文件,用于运行带有外部(即面向主机)端口的单个服务 MongoDB
# author: Anthon van der Neut <a.van.der.neut@ruamel.eu> # description: mongo container mongodb: container_name: mongo image: mongo:2.4 volumes: - /data1/DB/mongo:/data/db ports: - 27017:27017
systemd
命令 dc2service --systemd generate /opt/docker/mongo/docker-compose.yml 将生成文件 /etc/systemd/system/mongo-docker.service
[Unit] Description=mongo container on port 27017 # Author = Anthon van der Neut <a.van.der.neut@ruamel.eu> (dc2service 0.1.0.dev) Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml up --no-recreate ExecStop=/opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml stop [Install] WantedBy=multi-user.target
如果您已安装 ruamel.dcw,则 .../bin/docker-compose 将为 .../bin/dcw
Upstart
命令 dc2service --upstart generate /opt/docker/mongo/docker-compose.yml 将生成文件 /etc/init/mongo-docker.conf
description "mongo container on port 27017" author "Anthon van der Neut <a.van.der.neut@ruamel.eu> (dc2service 0.1.0.dev)" start on filesystem and started docker stop on runlevel [!2345] respawn pre-start script /opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml up -d --no-recreate end script script sleepWhileAppIsUp(){ while docker ps --filter=name=mongo | grep -qF mongo ; do sleep 2 done } sleepWhileAppIsUp end script post-stop script if docker ps --filter=name=mongo | grep -qF mongo; then /opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml stop fi end script
如果您已安装 ruamel.dcw,则 .../bin/docker-compose 将为 .../bin/dcw
环境变量扩展
如果您在 YAML 文件中的版本 1 docker-compose.yml 文件中使用环境变量,如果它们的形式为 ${XYZ},它们将被展开。另一种形式 $XYZ 不会被展开。但是,您应该考虑安装 ruamel.dcw 并使用版本 2 格式,因为它可以动态处理展开,并允许在 YAML 文件中指定默认值,以及为 Dockerfile 存储环境变量。
展开仅适用于复制部分(外部端口号、容器名称)。
如果您使用此功能,请确保在 conf 文件中设置了环境变量。在 systemd 中
[Service] Environment=DOCKERIMAPPORT=143
和 Upstart
env DOCKERIMAPPORT=143
dc2service 将尝试为您插入正确的定义。
对于版本 2 文件和使用 ``ruamel.dcw`` 的情况,这不是必需的,因此不会执行
查找 docker-compose
由于配置文件中会插入 docker-compose 或 dcw 的完整路径,因此需要可用的路径。 dc2service 将在 /opt/util/docker-compose/bin/ 和 PATH 环境变量中搜索 dcw 和 docker-compose 的位置。如果您的 docker-compose 不在您的路径中,您可以使用选项 --docker-compose 手动输入完整路径,或者在此文件 ~/.config/ruamel_dc2service/ruamel_dc2service.pon 中指定此路径。
dict( glbl={'docker-compose': '/opt/util/docker-compose/bin/docker-compose'}, )
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源代码分发
构建版本
ruamel.dc2service-0.3.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 25257aafc23f7101cfd560c8d92587f2e349675caf653e09d92af72b5cb0a691 |
|
MD5 | 13fe5bb0ff38e0b4c74abeff9282e91f |
|
BLAKE2b-256 | 2deeb51f1e27e8a4749e8869dc6db8b105269324b88481757da13d26f787354a |
ruamel.dc2service-0.3.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fbc53679ee98cd4eb724b0898e74b10d7a68b9682f6f502b9cd3efb8b98ad4ca |
|
MD5 | 3521ca327cc23bd496607eef2a135459 |
|
BLAKE2b-256 | b547ead622da81f38a1269f29eefe12ceb6008a88773d8c28ab5e6cfbb1e2967 |