在gitlab CI中运行docker-compose时执行bash脚本

时间:2019-07-29 09:53:53

标签: bash docker docker-compose gitlab

我有以下.gitlab-ci.yml文件:

image:
  name: docker/compose:1.24.1
  entrypoint: ["/bin/sh","-l","-c"]

services:
  - docker:dind

stages:
  - test
  - deploy

pytest:
  stage: test
  script:
    - cd tests/
    - docker-compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from pytest

运行docker-compose.test.yml文件,如下所示:

version: '3'

services:
  pytest:
    build: ..
    command: bash -c "/wait-for-it.sh dynamodb:8000 -- && cd /tests/ && pytest -s"
  dynamodb:
    image: amazon/dynamodb-local
    ports:
      - '8000:8000'
    command: -jar DynamoDBLocal.jar -inMemory -port 8000

在这种情况下,pytest等待dynamodb启动并运行,然后运行python测试。这在我的机器上效果很好。

但是,当Gitlab CI实际运行它时,出现以下错误:

bash: /wait-for-it.sh: Permission denied

如何避免此问题?使用chmod -x,找不到文件。

1 个答案:

答案 0 :(得分:1)

您需要使wait-for-it.sh可执行,在您的Dockerfile中添加:

RUN chmod +x /path/to/wait-for-it.sh