gitlab ci:mysql构建和恢复db dump

时间:2017-05-16 19:24:34

标签: java mysql maven gitlab gitlab-ci

在gitlab.yml我有

mysql_build:
  stage: build
  variables:
    MYSQL_DATABASE: rates
    MYSQL_ROOT_PASSWORD: root
  services:
  - mysql:latest
  image: mysql
  before_script:
  - mysql --version
  script:
  - echo "SELECT 'OK';" | mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" --host=mysql "${MYSQL_DATABASE}"
  - mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" rates < db/rates_db.sql

它是成功安装mysql,但我想恢复sql dump文件以便在下一阶段访问它。

启动这部分时,我有例外:

 - mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" rates < db/rates_db.sql

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

真实应用程序位于此处

https://gitlab.com/armdev/exchange-rates

如何在mysql中恢复db?

1 个答案:

答案 0 :(得分:2)

  

初始化新实例

     

首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh,.sql和.sql.gz的文件,这些文件位于/docker-entrypoint-initdb.d中。文件将按字母顺序执行。您可以通过将SQL转储装入该目录并使用提供的数据提供自定义映像来轻松填充您的mysql服务。默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中。

试试这个

Dockerfile

FROM mysql

ENV MYSQL_DATABASE rates
ENV MYSQL_ROOT_PASSWORD root

COPY db/rates_db.sql /docker-entrypoint-initdb.d/

替换为gitlab-ci.yml

mysql_build:
  stage: build
  script:
    - docker build . -t <Image name>