Symfony 3 GitLab CI SQLSTATE [HY000] [2002] Нет такого файла или каталога, соединение MySQL

0

Не стесняйтесь давать совет о CI, потому что я новичок в CI.

У меня есть приложение symfony (4), и оно работает хорошо на рабочем сервере. После этого я хотел написать файл CI для этого проекта. Но я получил ошибку от MySQL (5.7).

Я проверил MySQL, связанный с основным контейнером, и я уверен, что делаю.

Я использовал удаленный сервер MySQL, но снова получил ту же ошибку.

Я получил ошибку в этой строке

...php bin/console doctrine:schema:create...

это файл.gitlab-ci.yml

image: php:7.1-cli

services:
  - mysql:latest

variables:
  APP_ENV: prod
  MYSQL_ROOT_PASSWORD: root
  MYSQL_USER: user_master
  MYSQL_PASSWORD: secret
  MYSQL_DATABASE: db_master
  DATABASE_URL: mysql://user_master:secret@mysql:3306/db_master

cache:
  paths:
    - vendor/

stages:
  - build
  - test
  - deploy

before_script:
  - apt-get update -yqq
  - apt-get install -yqq libicu-dev libxml2-dev libxslt-dev libmcrypt-dev zlib1g-dev
  - docker-php-ext-configure intl
  - docker-php-ext-install -j$(nproc) intl dom xmlrpc xsl pdo pdo_mysql mysqli mcrypt zip
  - docker-php-ext-enable opcache

after_script:
  - php bin/console doctrine:schema:drop --force

build:app:
  stage: build
  script:
    - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    - /usr/local/bin/composer install --no-dev --no-progress --no-suggest --optimize-autoloader --quiet
    - rm -rf /usr/local/bin/composer
    - php bin/console doctrine:schema:create --env=prod --ansi

test:app:
  stage: test
  script:
    - echo "Yes this is test - YAYY"

deploy:app:
  stage: deploy
  script:
    - echo "Yes, this is deploy - YAYY"

Я искал в документах GitLab, GitHub также Stackoverflow. Я нашел решения, но уже такие же.

Я старался;

  • сна 60-х
  • удаленный сервер MySQL
  • pdo, pdo_mysql достаточно знаю, но я загружаю mysqli
  • добавить --env = prod для доктрины: schema: create
  • добавьте отдельную работу. Как и build: mysql и build: app (на самом деле я не знаю, как я могу получить адрес контейнера)
  • также я проверяю некоторые вопросы о Laravel, но это не сработало.

Должен ли я установить сервер MySQL внутри контейнера? Это хорошая идея для CI? Или мне нужно установить зависимости для этого контейнера, такие как libmysql-dev?

На самом деле, если у вас есть хороший пример для (symfony, mysql и gitlab CI), я могу посмотреть это, дайте мне знать.

Ответ

Я решил, но на самом деле я не уверен, как я это сделал. Я просто добавляю

DATBASE_URL: mysql://<user>:<password>@<hostname>:<port>/<db_name>

Не могли бы вы мне посоветовать.

Теги:
gitlab-ci

1 ответ

0
Лучший ответ

Возможно, ваше приложение ищет эту переменную ENV и использует ее, если она присутствует: https://symfony.com/doc/current/doctrine/dbal.html

"Чтобы начать, настройте переменную среды DATABASE_URL"

  • 0
    Спасибо за ваш комментарий. На самом деле я добавил APP_ENV, но не добавил DATBASE_URL. Я просто попробовал и работал :)
  • 0
    Круто, не стесняйтесь пометить ответ как правильный и upvote, если хотите;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню