Docker-compose отключить вывод на один из контейнеров

Я использую Codeship CI для своего проекта. У меня есть тесты селена, и я использую удаленный браузер из selenium/standalone-firefox но он производит тонны журналов, поэтому я хочу отключить стандартный вывод для selenium/standalone-firefox контейнер.

Есть идеи, как я могу это сделать?

4 ответа

Решение

Я использовал этот подход:

JAVA_OPTS=-Dselenium.LOGGER.level=WARNING

Добавил его как переменные ENV в образ докера для selenium/standalone-chrome,

Использование --log-driver=none в docker run:

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

Или docker-compose.yml

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

    image:
      selenium/standalone-firefox

Вы также можете отправить журнал в файл, используя:

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

Или docker-compose.yml

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

    image:
      selenium/standalone-firefox

Для docker-compose файла версии 1 нет другого способа, кроме как изменить entry_point.sh

поместите этот файл рядом с вашим 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

Использование этого docker-compose.yml:

selenium:
  ports:
    - "4444:4444"

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

С уважением

CodeShip использует пользовательский вариант docker-compose v1, который принимает настройку среды. У меня работает следующее в CodeShip-Services.yml:

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

Значение SE_OPTS не должно быть в кавычках. /tmp доступен для записи, в других местах может возникнуть ошибка разрешения.

Теперь с помощью Docker Compose v2 вы можете удалить конфигурацию верхнего уровня. Он включает спецификацию Compose как «версию» Docker Compose (см. «Предупреждение» на соответствующей странице документа ). Спецификация позволяет использовать конфигурацию «присоединить» .

В вашем случае вы можете добиться того, чего хотите, с помощью следующего docker-compose.yml:

      services:
  selenium:
    ports:
      - "4444:4444"
    attach: false

    image:
      selenium/standalone-firefox

Предупреждение: Обратите внимание, что нетversionключ здесь. Это важно. Также обратите внимание, что команда Docker Compose v2docker compose(поэтому, пожалуйста, НЕ используйте команду с этим файлом).

Альтернативный способ. С помощью Docker Compose v2 вы можете видеть вывод только для выбранной службы, например:

      docker compose up --attach service_with_useful_output

Предупреждение: не используйте этот флаг с Docker Compose v1 (docker-compose) для этой цели, потому чтоdocker-compose up --attach service_with_useful_outputработает по-другому.

Другие вопросы по тегам