- 服务
服务
悟空提供了用于定义服务容器的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