В настоящее время я настраиваю конвейер сборки / тестирования для моего приложения (django) с помощью Google Cloud Build (и тестирую с использованием 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 из google-cloud-build)
Вот мой файл для создания 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
...
(все команды запускаются с 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
напрямую работаетправильно
Я подозреваю, что способ монтирования томов неверен, но не могу найти почему / как.
Если у кого-то есть какие-либо замечания по этому вопросу, это будет очень полезно :)
Заранее спасибо.