web-dev-qa-db-fra.com

Docker-compose désactiver la sortie sur l'un des conteneurs

J'utilise Codeship CI pour mon projet. J'ai des tests Selenium et j'utilise un navigateur distant depuis Selenium/standalone-firefox mais il produit des tonnes de journaux, donc je veux désactiver stdout pour Selenium/standalone-firefox conteneur.

Des idées comment je peux faire ça?

19
Blejwi

J'ai utilisé cette approche:

Java_OPTS=-Dselenium.LOGGER.level=WARNING

Ajout en tant que variables ENV dans l'image docker pour Selenium/standalone-chrome.

2
Blejwi

Utilisation --log-driver=none dans docker run:

docker run -d --log-driver=none Selenium/standalone-firefox

Ou docker-compose.yml

version: '2'
services:
  Selenium:
    ports:
      - "4444:4444"
    logging:
      driver: "none"

    image:
      Selenium/standalone-firefox

Vous pouvez également envoyer le journal dans un fichier en utilisant:

docker run -d --log-driver=none -e SE_OPTS="log log.txt" Selenium/standalone-firefox

Ou docker-compose.yml

version: '2'
services:
  Selenium:
    ports:
      - "4444:4444"
    logging:
      driver: "none"
    environment:
      - SE_OPTS="log log.txt"

    image:
      Selenium/standalone-firefox

Pour la version 1 du fichier Docker-compose, il n'y a pas d'autre moyen que de modifier le entry_point.sh

placez ce fichier à côté de votre docker-compose.yml entry_point.sh

#!/bin/bash

source /opt/bin/functions.sh

export GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH"

function shutdown {
  kill -s SIGTERM $NODE_PID
  wait $NODE_PID
}

if [ ! -z "$SE_OPTS" ]; then
  echo "appending Selenium options: ${SE_OPTS}"
fi

SERVERNUM=$(get_server_num)
xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \
  Java ${Java_OPTS} -jar /opt/Selenium/selenium-server-standalone.jar \
  ${SE_OPTS} >/dev/null &
NODE_PID=$!

trap shutdown SIGTERM SIGINT
wait $NODE_PID

L'utilisation de ce docker-compose.yml:

Selenium:
  ports:
    - "4444:4444"

  volumes:
    - .:/mnt
  image:
    Selenium/standalone-firefox
  command: bash /mnt/entry_point.sh >/dev/null

Cordialement

28

CodeShip utilise une variante personnalisée de docker-compose v1 qui accepte un paramètre d'environnement. Ce qui suit dans codeship-services.yml a fonctionné pour moi:

Selenium:
  image: Selenium/standalone-chrome
  cached: true
  container_name: Selenium
  environment:
    -  SE_OPTS=-log /tmp/log.txt

La valeur SE_OPTS ne doit pas être entre guillemets./tmp est accessible en écriture, d'autres emplacements peuvent entraîner une erreur d'autorisation.

3
Piers C