• 服务

服务

悟空提供了用于定义服务容器的YAML文件中的服务部分.以下配置组成数据库和缓存容器.

通过自定义主机名访问服务.在下面的示例中,MySQL服务分配的主机名称为database,可从database:3306访问.

services:
  database:
    image: mysql
+   environment:
+     - MYSQL_DATABASE=test
+     - MYSQL_ALLOW_EMPTY_PASSWORD=yes

  cache:
    image: redis

Configuration

服务容器通常公开环境变量,以自定义服务的启动,例如默认用户名,密码和端口.请参阅官方图像文档以了解更多信息.

services:
  database:
    image: mysql
+   environment:
+     - MYSQL_DATABASE=test
+     - MYSQL_ALLOW_EMPTY_PASSWORD=yes

  cache:
    image: redis

Detachment

服务和长时间运行的容器也可以使用detach参数包含在配置的流水线部分中,而不会阻塞其他步骤.当需要显式控制启动顺序时,应该使用此方法.

pipeline:
  build:
    image: golang
    commands:
      - go build
      - go test

  database:
    image: redis
+   detach: true

  test:
    image: golang
    commands:
      - go test

来自分离步骤的容器将在流水线结束时终止.

初始化

服务容器需要时间来初始化并开始接受连接.如果您无法连接到服务,可能需要等待几秒钟或实现回退.

pipeline:
    test:
      image: golang
      commands:
  +     - sleep 15
        - go get
        - go test
  
  services:
    database:
      image: mysql

Complete Pipeline Example

services:
  database:
    image: mysql
    environment:
      - MYSQL_DATABASE=test
      - MYSQL_ROOT_PASSWORD=example
pipeline:
  get-version:
    image: ubuntu
    commands:
      - ( apt update && apt dist-upgrade -y && apt install -y mysql-client 2>&1 )> /dev/null
      - sleep 30s # need to wait for mysql-server init
      - echo 'SHOW VARIABLES LIKE "version"' | mysql -uroot -hdatabase test -pexample