Google cloud platform 无法在google cloud build上正确初始化mysql db(使用docker compose)
我目前正在使用Google Cloud build为我的应用程序(django)建立一个构建/测试管道(并使用Google cloud platform 无法在google cloud build上正确初始化mysql db(使用docker compose),google-cloud-platform,docker-compose,google-cloud-build,Google Cloud Platform,Docker Compose,Google Cloud Build,我目前正在使用Google Cloud build为我的应用程序(django)建立一个构建/测试管道(并使用Cloud build local进行测试) 为了正确运行测试,我需要启动一个mysql依赖项(为此我使用docker compose)。问题是,在云构建步骤中运行docker compose时,数据库初始化脚本没有正确运行,我得到一个 /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/0-i
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.
(从谷歌云构建中运行docker compose可以正常工作)
这是我的docker撰写文件:
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
...
(所有命令都从父目录运行)
当我跑的时候
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
可以直接正常工作
我怀疑卷的装载方式不正确,但无法找到原因/方式
如果有人对此有任何意见,这将非常有用:)
提前感谢。看起来这是一个适合于
云构建本地的问题,在GCP上正常工作看起来是适合于云构建本地的问题,在GCP上正常工作卷定义为空是否正常?是的,它可以为空,在这种情况下,您使用默认驱动程序。基本上,当数据库正确启动时,此特定卷已正确装入并可访问(并且在cloud build run命令结束时可访问)。您的卷定义为空是否正常?是的,它可以为空,在这种情况下,您使用默认驱动程序。基本上,这个特定的卷在数据库正确启动时被正确装载和访问(并且在cloudbuild-run命令结束时可以访问)。