2017-08-30 5 views
0

Depuis que j'ai installé Capybara-webkit, je ne peux pas lancer mes spécifications avec docker composer. Les prochains séjours de commande en attente:Incompatibilité Docker-composer et Xvfb?

$ docker-compose run web xvfb-run -a bundle exec rspec 

Je pensais que j'ai un problème avec Capybara-webkit, donc je créé un SO question et an issue on the repo, mais il semble qu'il est plus un pb d'interaction entre docker-Compose et xvfb.

Si je fais d'abord

$ docker-compose run web bash 

puis

$ xvfb-run -a bundle exec rspec spec 

il fonctionne très bien. Je n'ai aucune idée.

Modifier 31/08/17

Comme demandé, voici le fichier docker-Compose:

version: '2' 

services: 

    db: 
    image: mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=XXXXX 
    volumes: 
     - mysql-data:/var/lib/mysql 

    redis: 
    image: redis 
    ports: 
     - "6379:6379" 
    volumes: 
     - redis:/data 

    web: 
    build: . 
    command: bundle exec rails s -p 3000 -b '0.0.0.0' 
    volumes: 
     - .:/app_dir 
     - app-gems:/usr/local/bundle 
    ports: 
     - "3000:3000" 
    depends_on: 
     - db 
     - redis 

volumes: 
    mysql-data: 
    driver: local 
    redis: 
    driver: local 
    app-gems: 
    driver: local 

Et le Dockerfile:

FROM ruby:2.4.1 

RUN apt-get update -qq && apt-get install -y \ 
    build-essential \ 
    libpq-dev \ 
    nodejs \ 
    xvfb \ 
    qt5-default \ 
    libqt5webkit5-dev \ 
    gstreamer1.0-plugins-base \ 
    gstreamer1.0-tools \ 
    gstreamer1.0-x 

RUN mkdir /app_dir 
WORKDIR /app_dir 

ADD Gemfile* /app_dir/ 

RUN bundle install 

COPY . . 
+0

Joe Ferris, créateur de Capybara-webkit, m'a donné trois fils: - le shell par défaut - stdin - interactif vs shell non interactif invocations. – Ruff9

+0

Avez-vous essayé ce 'docker-compose exécuter web/bin/bash -c" xvfb-run -un bundle exec rspec "'. Vous pouvez également essayer un autre et voir si cela fonctionne. Vous pouvez également essayer une autre version 'docker-composer exécuter web/bin/bash -c" exec xvfb-run -a bundle exec rspec " –

+0

Les deux m'ont donné la même réponse:' ERREUR: Impossible de démarrer le service web: erreur d'exécution oci: container_linux.go: 262: démarrage du processus de conteneur causé "exec: \"/bin \ ": permission refusée" ' – Ruff9

Répondre

0

publier des commentaires comme réponse puisque j'ai besoin de formatage

Pouvez-vous essayer de modifier ci-dessous

command: bundle exec rails s -p 3000 -b '0.0.0.0' 

à

entrypoint: xvfb-run -a bundle exec rspec 

et essayer docker-compose up

Aussi, si cela ne fonctionne pas essayez d'ajouter tty: true au service

0

En docker- composer.yml

command: ./start.sh 

Et dans le fichier start.sh

#!/bin/bash 
xvfb-run "run whatever"