Сборка Google Cloud не удалась для ремесленника Laravel, включая подключение к базе - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь упаковать исходный код как изображение и собрать с помощью Google Cloud Build

вот мой файл Docker:

FROM php
RUN cd ~ && curl -sS https://getcomposer.org/installer -o composer-setup.php
RUN cd ~ && php composer-setup.php --install-dir=/usr/local/bin --filename=composer
ADD ./mysource /app
WORKDIR /app
RUN cd /app && composer update --ignore-platform-reqs && composer install --ignore-platform-reqs
RUN cd /app && composer require laravel/horizon && php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

оказалось, что сборка не удалась, и журнал показал: (самый новый журналвверху)

Step #1: 
ERROR: build step 1 "gcr.io/cloud-builders/docker" failed: exit status 1
Finished Step #1
Step #1: The command '/bin/sh -c cd /app && composer update --ignore-platform-reqs && composer install --ignore-platform-reqs' returned a non-zero code: 1
Step #1: Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1
Step #1: SQLSTATE[HY000] [2002] Connection refused 
Step #1: In PDOConnection.php line 46:
Step #1: SQLSTATE[HY000] [2002] Connection refused 
Step #1: In PDOConnection.php line 50:
Step #1: chema.tables where table_schema = forge and table_name = explorers) 
Step #1: SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_s 
Step #1: 
Step #1: In Connection.php line 664:
Step #1: 
Step #1: > @php artisan package:discover
Step #1: > Illuminate\Foundation\ComposerScripts::postAutoloadDump
Step #1: Generating optimized autoload files

Я ищу что-то вроде сервисов в конвейере битовой памяти , которые вы могли бы использовать во время процесса сборки.Я также упомянул проблему, поднятую здесь , но эти ответы не разрешили мою ситуацию.

ценю за любую идею

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

просто хочу опубликовать обновление для моего решения.Я добавил, что добавляю контейнер MySQL с , создавая определенную сеть и имя которой указывается во всех других шагах (контейнерах) --network <network_name>, чтобы контейнеры в следующих шагах могли напрямую соединяться по имени контейнера mysql.

Для безопасной игры я добавил контейнер в качестве буфера, чтобы у контейнера mysql было достаточно времени для сборки и запуска.

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['network','create','gcb_network']
- name: 'gcr.io/cloud-builders/docker'
  args: ['run','--name=mysql','-p','3306:3306','--network','gcb_network','--env','MYSQL_USER=<user>','--env','MYSQL_PASSWORD=<pwd>','--env','MYSQL_ROOT_PASSWORD=<user>','--env','MYSQL_DATABASE=<dbname>','-d','mysql/mysql-server:5.7']
- name: 'ubuntu'
  args: ['sleep','10']
  id: 'MYSQLDeferrer'
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/<projectname>/<img_name>:latest','--network','gcb_network','-f','<path_to_docker_file>','.']
  waitFor:
    - 'MYSQLDeferrer'
  env:
  - 'DB_HOST='
  - 'DB_USERNAME='
  - 'DB_PASSWORD='
images: ['gcr.io/<projectname>/<img_name>']

вам может / не может понадобиться env в соответствии ствои настройки.

0 голосов
/ 28 июня 2019

Per https://github.com/GoogleCloudPlatform/community/issues/351#issuecomment-370056462,

К сожалению, на этапе сборки подключение CloudSQL недоступно.

...