mysql - Gitlab CI 运行器 |自定义 mysql 配置文件

标签 mysql docker gitlab-ci my.cnf runner

我正在尝试为 Gitlab CI Runner 设置我自己的 mysql conf。 我在文档中找到了如何设置我自己的 php.ini :

before_script:
- cp ci/php.ini /usr/local/etc/php/conf.d/test.ini

我没有找到关于如何设置 my.cnf 的信息,我试过了:

before_script:
- cp ci/my.cnf /usr/local/etc/mysql/conf.d/my.cnf

但是/usr/local/etc/mysql/在生成的环境中不存在。

这是我所有的 gitlab.ci :

services:
  - mysql:latest

variables:
  # Configure mysql environment variables
  WITH_XDEBUG: "1"
  MYSQL_ROOT_PASSWORD: password
  MYSQL_DATABASE: symfony

cache:
  paths:
  - vendor/

before_script:
# Install dependencies
- bash ci/docker_install.sh > /dev/null
- cp ci/php.ini /usr/local/etc/php/conf.d/test.ini
- cp ci/my.cnf /usr/local/etc/mysql/conf.d/my.cnf
- mv app/config/parameters.gitlab.yml app/config/parameters.yml
- mv app/config/config_test.gitlab.yml app/config/config_test.yml
- composer clear-cache
- composer install
- php bin/console doctrine:schema:update --force
- php bin/console doctrine:fixtures:load

test:
  image: php:7.0
  stage: test
  script:
  - echo "Running PHPUnit Tests"
  - vendor/bin/phpunit --configuration phpunit.xml.dist --colors --debug --coverage-text

还有我的 docker_install.sh :

  #!/bin/bash

  # We need to install dependencies only for Docker
  [[ ! -e /.dockerenv ]] && [[ ! -e /.dockerinit ]] && exit 0

  set -xe

  # Install git (the php image doesn't have it) which is required by composer
  apt-get update -yqq
  apt-get install git -yqq
  apt-get install wget -yqq
  apt-get install zip unzip -yqq

  # Install composer
  curl -sS https://getcomposer.org/installer | php
  mv composer.phar /usr/local/bin/composer

  # Install mysql driver
  # Here you can install any other extension that you need
  docker-php-ext-install pdo_mysql mbstring

谢谢。

最佳答案

我不认为使用 Gitlab CI 配置可以轻松地将配置挂载到服务容器中。只创建一个 Dockerfile 来扩展您用于测试的图像并在那里设置您需要的配置可能更容易。

你可以在这里找到一个这么小的 Dockerfile 的例子,作者复制了一个配置文件来设置编码为 utf8:

https://hub.docker.com/r/dnhsoft/mysql-utf8/dockerfile

或者,如果您不想编写复制文件的 Dockerfile,您可以像这样简单地附加您的配置:

FROM mysql:8.0

RUN echo '[mysqld]' >> /etc/mysql/conf.d/mysql.cnf
RUN echo 'default-authentication-plugin = mysql_native_password' >> /etc/mysql/conf.d/mysql.cnf
RUN echo 'collation-server = utf8mb4_general_ci' >> /etc/mysql/conf.d/mysql.cnf
RUN echo 'character-set-server = utf8mb4' >> /etc/mysql/conf.d/mysql.cnf

一旦您的 Dockerfile 具有您需要的配置,您就可以使用您的用户名将其发布到 Dockerhub。然后在你的 gitlab-ci.yml 中你可以像这样使用它:

services:
    - {name: 'mydockerusername/mysql:1', alias: 'mysql'}

gitlab-ci.yml 中的脚本中,您可以像这样连接到您的自定义数据库容器:

script:
    - 'mysql -u gitlabci -h mysql --password="gitlabci" -e "SHOW DATABASES"'

关于mysql - Gitlab CI 运行器 |自定义 mysql 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41016683/

相关文章:

Gitlab - 创建分支后运行脚本

mysql - 获取未记录在联接表中的行

mysql - 在自增字段前自动添加字母

python - 保存Docker容器数据

php - Docker 和 XDebug 不读取断点 VSCode

ubuntu - 在 GitLab 中添加证书颁发机构?

php - 无法将网站连接到我的 phpmyadmin MySQL 数据库

java - 使用 order by 和 limit by 子句优化 mysql 查询

linux - 如何在 docker 镜像中安装 python 模块?

docker - 在没有注册表的情况下使用 docker for gitlab-ci