Docker compose docker compose使用gitlab ci抛出错误
我尝试将Gitlab CI与docker compose一起使用,但总是出现以下错误:Docker compose docker compose使用gitlab ci抛出错误,docker-compose,gitlab,Docker Compose,Gitlab,我尝试将Gitlab CI与docker compose一起使用,但总是出现以下错误: $ docker-compose up -d --build Creating network "backoffice_default" with the default driver Building php Creating backoffice_database_1 ... Creating backoffice_database_1 ... done Creating backoffice_php_
$ docker-compose up -d --build
Creating network "backoffice_default" with the default driver
Building php
Creating backoffice_database_1 ...
Creating backoffice_database_1 ... done
Creating backoffice_php_1 ...
Creating backoffice_php_1 ... done
$ docker-compose exec php composer -v
Traceback (most recent call last):
File "bin/docker-compose", line 6, in <module>
File "compose/cli/main.py", line 68, in main
File "compose/cli/main.py", line 121, in perform_command
File "compose/cli/main.py", line 464, in exec_command
File "site-packages/dockerpty/pty.py", line 338, in start
File "site-packages/dockerpty/io.py", line 32, in set_blocking
ValueError: file descriptor cannot be a negative integer (-1)
Failed to execute script docker-compose
这是我的docker compose.yml
文件:
version: '2'
services:
database:
image: mysql:latest
environment:
MYSQL_DATABASE: database
MYSQL_ROOT_PASSWORD: mysql_strong_password
MYSQL_USER: database
MYSQL_PASSWORD: mysql_strong_password
php:
build: ./app/docker
tty: true
volumes:
- ./app/docker/php.ini:/usr/local/etc/php/conf.d/custom.ini
- ./:/var/www/symfony
links:
- database
这是我的.gitlab ci.yml
stages:
- build
- cleanup_build
- test
- deploy
- cleanup
before_script:
- docker info
build:
stage: build
script:
- docker-compose up -d --build
- docker-compose exec php composer -v
- docker-compose exec php composer install
- docker-compose exec php php bin/console doctrine:schema:create --dump-sql --force
- docker-compose exec php php bin/console doctrine:fixtures:load -n
cleanup_build:
stage: cleanup_build
script:
- docker-compose config
- docker-compose ps
- docker-compose logs php
- docker-compose logs database
- exit 1
when: on_failure
phpunit:
stage: test
script:
- docker-compose exec -T php phpunit -c .
deploy:
stage: deploy
script:
- echo "deploy to staging server"
cleanup:
stage: cleanup
script:
- docker-compose down
你们知道怎么解决这个问题吗?
因为我使用gitlab runner
user直接从shell尝试并执行相同的cmds,所以没有出现任何错误。我试图使用-T
标志运行docker compose exec
,但出现另一个错误:错误:作业失败:退出状态1
,没有附加消息。问题帮助我找到如何解决该问题的方法
只需在exec之后添加一个-T
arg就可以帮上大忙
stages:
- build
- cleanup_build
- test
- deploy
- cleanup
before_script:
- docker info
build:
stage: build
script:
- docker-compose up -d --build
- docker-compose exec php composer -v
- docker-compose exec php composer install
- docker-compose exec php php bin/console doctrine:schema:create --dump-sql --force
- docker-compose exec php php bin/console doctrine:fixtures:load -n
cleanup_build:
stage: cleanup_build
script:
- docker-compose config
- docker-compose ps
- docker-compose logs php
- docker-compose logs database
- exit 1
when: on_failure
phpunit:
stage: test
script:
- docker-compose exec -T php phpunit -c .
deploy:
stage: deploy
script:
- echo "deploy to staging server"
cleanup:
stage: cleanup
script:
- docker-compose down