如何禁用其中一个容器的输出?

How to disable output on one of containers?

我正在为我的项目使用 Codeship CI。 我有 selenium 测试,我正在使用来自 selenium/standalone-firefox 的远程浏览器,但它会生成大量日志,因此 我想禁用 selenium/standalone-firefox 容器 的标准输出。

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

docker run中使用--log-driver=none:

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

我使用了这种方法:

JAVA_OPTS=-Dselenium.LOGGER.level=WARNING

在 docker 图片中将其添加为 selenium/standalone-chrome 的 ENV 变量。