如何禁用其中一个容器的输出?
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 变量。
我正在为我的项目使用 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 变量。