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

在gitlab CI中运行docker compose时执行bash脚本,bash,docker,docker-compose,gitlab,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

我有以下
.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
,找不到文件。

您需要使
等待它。sh
可执行文件,在您的
Dockerfile
中添加:

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

太棒了。谢谢你的帮助。