带有Docker镜像的Gitlab CI

时间:2018-04-14 13:05:54

标签: docker gitlab gitlab-ci-runner

我正在使用Gitlag Server并获得2个gitlab-runner(一个在我的本地,一个在VServer上) - 两者都完美地与echo和简单的东西一起工作,比如用mysql和php构建一个ubuntu服务器

stages:
- dbserver
- deploy

build:
 stage: dbserver
 image: ubuntu:16.04  
   services:
   - mysql:5.7
 - php:7.0
variables:
   MYSQL_DATABASE: test
   MYSQL_ROOT_PASSWORD: test2
 script: 
   - apt-get update -q && apt-get install -qqy --no-install-recommends 
  mysql-client
   - mysql --user=root --password=\"$MYSQL_ROOT_PASSWORD\" --
     host=mysql < test.sql

我想现在导入一个数据库,但我不了解它背后的想法或技术。如何导入位于本地PC或服务器上的.sql文件?我是否需要自己创建DOCKERFILE,或者我可以使用gitlab.yml文件来创建它吗?

2 个答案:

答案 0 :(得分:0)

您可以使用 scp 将.sql文件复制到跑步者。

您可能需要添加命令来安装openssh-client,例如:

script:
   apt-get update -y && apt-get install openssh-client -y

然后在调用mysql之前添加scp行,例如:

- scp user@server:/path/to/file.sql /tmp/temp.sql
- mysql --user=root --password=\"$MYSQL_ROOT_PASSWORD\" --host=mysql < /tmp/temp.sql

答案 1 :(得分:0)

我找到了一个解决方案,它将目录从gitlab-runner机器绑定到我正在使用的实际容器:

sudo nano /etc/gitlab-runner/config.toml

你将卷改为这样的

volumes = ["/home/ubuntu/test:/cache"]

/ home / ubuntu / test 是计算机中的目录, / cache 是容器中的目录

在你这样做之前,我建议停止跑步者然后重新开始