Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 无法在google cloud build上正确初始化mysql db(使用docker compose)_Google Cloud Platform_Docker Compose_Google Cloud Build - Fatal编程技术网

Google cloud platform 无法在google cloud build上正确初始化mysql db(使用docker compose)

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

我目前正在使用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.
(从谷歌云构建中运行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命令结束时可以访问)。