简介: 本文主要为大家讲解如何使用 docker-compose 一键启停 Cromwell。


使用 docker-compose 一键启停 Cromwell_配置文件

使用 docker-compose 一键启停 Cromwell_docker_02

镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

一、背景

Cromwell server 的启动需要以下组件配合:


  • 启动 Mysql 的 docker 容器作为 Crowmell 的持久化数据库,包括配置用户名,密码等
  • 填写 Cromwell 配置文件,包括 BCS 后端配置及数据库等配置
  • 使用 Cromwell 的 jar 包,启动 server

实际上 Cromwell 除了发布 jar 包,也会发布对应的 docker 镜像,我们可以考虑使用 docker-compose来简化以上步骤。docker-compose 是 Docker 官方的开源项目,其定位是定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)。

使用docker-compose 可以将容器化的 Cromwell 和 Mysql 两个 service 拉起,作为一个应用来运行。再配合脚本来简化配置,可以将 Cromwell 的服务做成一键启停。


二、开通 ECS 作为 Crowmell server

首先使用 Cromwell server 镜像 开通一台 ECS,ssh 登入机器后,可以运行目录下的cromwell-server.sh,进行Cromwell Server的管理:

. # ./cromwell-server.sh
2. cromwell-server.sh - init cromwell config and start/stop service
3. Usage: cromwell-server.sh [options...] [init/start/stop/status]
4. Options:
5. --id=STRING Access id
6. --key=STRING Access key
7. --root=STRING Oss root ****for**** cromwell, e.g: oss://my-bucket/cromwell/
8. --instance=STRING default runtime: instance **type** [ecs.sn1.medium]
9. --image=STRING default runtime: image id [img-ubuntu-vpc]

使用 docker-compose 一键启停 Cromwell_docker_02

三、第一次配置与启动服务

初次使用,需要做一些初始配置,可以使用下面的命令完成一键初始化与启动:


1. ./cromwell-server.sh init --id=LTAI8xxxxx --key=vVGZVE8qUNjxxxxxxxx --root=oss://gtx-wgs-demo/cromwell/

使用 docker-compose 一键启停 Cromwell_docker_02

上面的命令完成了以下配置:


  • ​--id​​: 批量计算的 Access Id
  • ​--key​​: 批量计算的 Access Key
  • ​--root​​: Crowmell 运行时在 OSS 上的工作根目录
  • ​--instance​​: Cromwell 默认运行时参数,实例类型
  • ​--image​​: Cromwell 默认运行时参数,镜像ID执行完以上命令后,会根据 Crowmell 配置文件模板生成配置文件,并通过 docker-compose 启动 Cromwell server,并在后台运行。

服务启动后,就可以通过镜像中的命令行工具 widdler 执行工作流的提交:

1. **cd** /home/cromwell/cromwell/ 
2. widdler run echo.wdl inputs.json -o bcs_workflow_tag:test_echo

使用 docker-compose 一键启停 Cromwell_docker_02

四、停止服务

使用下面的命令可以一键停止服务:


1. ./cromwell-server stop

使用 docker-compose 一键启停 Cromwell_docker_02

五、再次启动服务

在已经完成配置的情况下,使用下面的命令,可以完成服务启动:


1. ./cromwell-server start

使用 docker-compose 一键启停 Cromwell_docker_02

六、重新配置并启动服务

如果需要修改配置,在服务停止的情况下,再次使用 init 命令可以完成新配置重新启动:


1. ./cromwell-server.sh init --id=LTAI8xxxxx --key=vVGZVE8qUNjxxxxxxxx --root=oss://gtx-wgs-demo/cromwell/

使用 docker-compose 一键启停 Cromwell_docker_02

七、使用option文件设置默认运行时参数

在 Crowmell 的配置文件中,可以设置每个 backend 的默认运行时参数 default-runtime-attibutes,也可以在提交工作流时通过 option 覆盖原有设置。

所以如果您在提交工作流时用到了数据盘、NAS等,都可以在 option 文件中设置:

{
2. "default_runtime_attributes": {
3. "vpc": "192.168.0.0/24",
4. "autoReleaseJob": **true**,
5. "mounts": "nas://1f****04-xkv88.cn-beijing.nas.aliyuncs.com:/ /mnt/ true",
6. "dataDisk": "cloud_ssd 250 /home/mount/"
7. },
8. "bcs_workflow_tag": "Tagxxx",
9. "read_from_cache": **true**
10. }

使用 docker-compose 一键启停 Cromwell_docker_02

使用 widdler 命令行的 ​​-O​​ (大写的O)参数提交 option 文件:


1. widdler run echo.wdl inputs.json -O options.json

使用 docker-compose 一键启停 Cromwell_docker_02