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
работает по-другому.