在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
太棒了。谢谢你的帮助。