34

I am using Codeship CI for my project. I have selenium tests and I am using remote browser from selenium/standalone-firefox but it's producing tons of logs, so I want to disable stdout for selenium/standalone-firefox container.

Any ideas how I can do this?

funnydman
  • 9,083
  • 4
  • 40
  • 55
Blejwi
  • 1,005
  • 2
  • 10
  • 25

4 Answers4

48

Use --log-driver=none in docker run:

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

Or docker-compose.yml

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

    image:
      selenium/standalone-firefox

You can also send the log to a file using:

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

Or docker-compose.yml

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

    image:
      selenium/standalone-firefox

For docker-compose file version 1 there is no other way than modifying the entry_point.sh

put this file next your 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

The use this docker-compose.yml:

selenium:
  ports:
    - "4444:4444"

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

Regards

Carlos Rafael Ramirez
  • 5,984
  • 1
  • 29
  • 36
3

CodeShip uses a custom variant of docker-compose v1 that accepts an environment setting. The following in codeship-services.yml worked for me:

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

The SE_OPTS value should not be in quotes. /tmp is writeable, other locations may result in a permission error.

Piers C
  • 2,880
  • 1
  • 23
  • 29
2

I used this approach:

JAVA_OPTS=-Dselenium.LOGGER.level=WARNING

Added it as ENV variables in docker image for selenium/standalone-chrome.

Blejwi
  • 1,005
  • 2
  • 10
  • 25
0

Now with Docker Compose v2 you can remove the version top-level configuration. It enables Compose Specification as Docker Compose "version" (see "Warning" on the related doc page ). The Specification allows to use the "attach" configuration.

In your case you can achieve what you wan by the following docker-compose.yml:

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

    image:
      selenium/standalone-firefox

Warning: Note that there is no version key here. It is important. Also note that Docker Compose v2 command is docker compose (so please, do NOT use docker-compose command with this file).

Alternative way With Docker Compose v2 you can see output for only selected service like this:

docker compose up --attach service_with_useful_output

Warning: Do not use this flag with Docker Compose v1 (docker-compose) for this purpose because docker-compose up --attach service_with_useful_output works differently.

Nick Vee
  • 621
  • 2
  • 7
  • 17