Не стесняйтесь давать совет о 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. Я нашел решения, но уже такие же.
Я старался;
Должен ли я установить сервер MySQL внутри контейнера? Это хорошая идея для CI? Или мне нужно установить зависимости для этого контейнера, такие как libmysql-dev?
На самом деле, если у вас есть хороший пример для (symfony, mysql и gitlab CI), я могу посмотреть это, дайте мне знать.
Я решил, но на самом деле я не уверен, как я это сделал. Я просто добавляю
DATBASE_URL: mysql://<user>:<password>@<hostname>:<port>/<db_name>
Не могли бы вы мне посоветовать.
Возможно, ваше приложение ищет эту переменную ENV и использует ее, если она присутствует: https://symfony.com/doc/current/doctrine/dbal.html
"Чтобы начать, настройте переменную среды DATABASE_URL"