Docker-compose在其中一个容器上禁用输出

时间:2016-10-12 10:50:11

标签: docker docker-compose codeship

我正在为我的项目使用Codeship CI。 我有selenium测试,我正在使用var result = context.Insurances .GroupBy(m => new { m.InsuranceTypeId , m.ApplicantId }) .Select( g => new { MaxInsurance = g.OrderByDescending(m => m.IssueDate) .Take(1) }) .SelectMany(m => m.MaxInsurance); 的远程浏览器,但是它产生了大量的日志,所以我想禁用selenium/standalone-firefox容器的stdout

我有什么想法可以做到这一点吗?

3 个答案:

答案 0 :(得分:21)

--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

此致

答案 1 :(得分:3)

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是可写的,其他位置可能会导致权限错误。

答案 2 :(得分:2)

我使用了这种方法:

JAVA_OPTS=-Dselenium.LOGGER.level=WARNING

selenium/standalone-chrome的泊坞窗图片中将其添加为ENV变量。