我目前正在使用Google Cloud Build为我的应用程序(django)设置一个构建/测试管道(并使用cloud-build-local进行测试)。
为了正确运行测试,我需要启动一个mysql依赖项(为此我使用docker-compose )。问题是,当在云构建步骤中运行docker-compose时,数据库初始化脚本没有正确运行,我得到一个
/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/0-init.sql
ERROR: Can't initialize batch_readline - may be the input source is a directory or a block device.(在google-cloud-build中运行docker-compose可以正常工作)
这是我的docker-compose文件:
version: '3.3'
services:
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'dev'
MYSQL_USER: 'dev'
MYSQL_PASSWORD: 'dev'
MYSQL_ROOT_PASSWORD: 'root'
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- reports-db:/var/lib/mysql-reports
- ./dev/databases/init.sql:/docker-entrypoint-initdb.d/0-init.sql
- ... (other init scripts)
volumes:
reports-db:和cloudbuild.yaml:
steps:
...
- id: 'tests-dependencies'
name: 'docker/compose:1.24.1'
args: ['up', '-d']
...文件的组织方式如下:
parent_dir/
dev/
databases/
init.sql
cloudbuild.yaml
docker-compose.yml
...(所有命令都从parent_dir/运行)
当我跑的时候
cloud-build-local --config=cloudbuild.yaml --dryrun=false .我得到了一个
...
Step #2 - "tests-dependencies": mysql_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/0-init.sql
Step #2 - "tests-dependencies": mysql_1 | ERROR: Can't initialize batch_readline - may be the input source is a directory or a block device.
...知道直接运行docker-compose up可以正常工作
我怀疑卷的挂载方式不正确,但找不到原因/如何挂载。
如果有人对此有任何意见,这将是非常有用的:)
提前谢谢。
发布于 2020-01-10 02:55:43
看起来这是一个cloud-build-local特有的问题,在GCP上可以正常工作。
https://stackoverflow.com/questions/58489584
复制相似问题