Docker 支持一个或两个或两个命令的入口点脚本(即 npm config 和 npm 运行)
Docker Entrypoint Script To Support One or Two or Both Commands (namely npm config & npm run)
我 运行 使用构建在 nodejs 之上的 docker 使用 testcafe 和 cucumberjs 进行测试。测试 运行 是通过 npm 脚本启动的。我在下面详细介绍了工作流程...
1) Git 拉预建 docker 图像
2) 可选择在 package.json 文件中设置一个 'config' 参数,例如...npm config set packageJson:task-profile auto-regression-chrome
3) 执行 运行ner 脚本即 npm run e2e-test
我的 shell 脚本只能满足 3,但我会进行改进以使其满足 2) 和 3)。我的 shell 脚本目前看起来像这样
#!/bin/sh
set -e
if [ "" == 'npm' ] && [ "" == 'run' ]; then
shift 2
XVFB_SCREEN_WIDTH=${SCREEN_WIDTH-1280}
XVFB_SCREEN_HEIGHT=${SCREEN_HEIGHT-720}
dbus-daemon --session --fork
Xvfb :1 -screen 0 "${XVFB_SCREEN_WIDTH}x${XVFB_SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
export DISPLAY=:1.0
fluxbox >/dev/null 2>&1 &
exec npm run "$@"
fi
# otherwise, just run whatever command was passed on
exec "$@"
关于如何改进脚本以满足 2) 和 3) 的任何想法。通常我会克隆图像并执行 运行ner 命令,但最好有一个 shell 脚本,它允许我先设置一些 npm 配置并执行 npm 运行.
有关意图的更多详细信息:
正在查看https://github.com/bhreinb/SYSTAC#running-tests-on-docker
我在 运行ning 测试 docker
时执行以下操作
1) 构建 docker 图像
docker build --no-cache -t bhreinb/systac .
2) 运行 docker 上的测试并丢弃图像...
docker run --rm -it -v $PWD/e2e/:/opt/systac/e2e bhreinb/systac npm run e2e-test
限制是在 运行测试之前需要在源代码管理中设置配置。我希望能够动态更新配置,运行 测试并使用一个命令丢弃图像,即
docker run --rm -it -v $PWD/e2e/:/opt/SYSTAC/e2e -v $PWD/reports/:/opt/SYSTAC/reports/ bhreinb/SYSTAC npm config set packageJson:task-profile auto-regression-chrome && npm run e2e-test
希望这是有道理的?
这是一个试探性的快速技巧,可让您使用 -v
选项传入配置参数。
#!/bin/sh
set -e
# Quick and dirty option processing
while [ = '-v' ]; do
case in
*=*)
option=${2%=*}
npm config set "$option" "${2#$option}"
shift 2;;
*)
echo "[=10=]: Fatal error: argument to -v must contain =" >&2
exit 127;;
esac
done
# Aside; use = not == inside [ ... ]
if [ "" = 'npm' ] && [ "" = 'run' ]; then
shift 2
XVFB_SCREEN_WIDTH=${SCREEN_WIDTH-1280}
XVFB_SCREEN_HEIGHT=${SCREEN_HEIGHT-720}
dbus-daemon --session --fork
Xvfb :1 -screen 0 "${XVFB_SCREEN_WIDTH}x${XVFB_SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
export DISPLAY=:1.0
fluxbox >/dev/null 2>&1 &
exec npm run "$@"
fi
exec "$@"
用法:
docker run --rm -it \
-v $PWD/e2e/:/opt/SYSTAC/e2e \
-v $PWD/reports/:/opt/SYSTAC/reports/ \
bhreinb/SYSTAC \
scriptname -v foo=bar \
-v packageJson:task-profile=auto-regression-chrome \
-v baz=quux \
npm run gargleblaster --demo --crash --splinters
我 运行 使用构建在 nodejs 之上的 docker 使用 testcafe 和 cucumberjs 进行测试。测试 运行 是通过 npm 脚本启动的。我在下面详细介绍了工作流程...
1) Git 拉预建 docker 图像
2) 可选择在 package.json 文件中设置一个 'config' 参数,例如...npm config set packageJson:task-profile auto-regression-chrome
3) 执行 运行ner 脚本即 npm run e2e-test
我的 shell 脚本只能满足 3,但我会进行改进以使其满足 2) 和 3)。我的 shell 脚本目前看起来像这样
#!/bin/sh
set -e
if [ "" == 'npm' ] && [ "" == 'run' ]; then
shift 2
XVFB_SCREEN_WIDTH=${SCREEN_WIDTH-1280}
XVFB_SCREEN_HEIGHT=${SCREEN_HEIGHT-720}
dbus-daemon --session --fork
Xvfb :1 -screen 0 "${XVFB_SCREEN_WIDTH}x${XVFB_SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
export DISPLAY=:1.0
fluxbox >/dev/null 2>&1 &
exec npm run "$@"
fi
# otherwise, just run whatever command was passed on
exec "$@"
关于如何改进脚本以满足 2) 和 3) 的任何想法。通常我会克隆图像并执行 运行ner 命令,但最好有一个 shell 脚本,它允许我先设置一些 npm 配置并执行 npm 运行.
有关意图的更多详细信息:
正在查看https://github.com/bhreinb/SYSTAC#running-tests-on-docker
我在 运行ning 测试 docker
时执行以下操作1) 构建 docker 图像
docker build --no-cache -t bhreinb/systac .
2) 运行 docker 上的测试并丢弃图像...
docker run --rm -it -v $PWD/e2e/:/opt/systac/e2e bhreinb/systac npm run e2e-test
限制是在 运行测试之前需要在源代码管理中设置配置。我希望能够动态更新配置,运行 测试并使用一个命令丢弃图像,即
docker run --rm -it -v $PWD/e2e/:/opt/SYSTAC/e2e -v $PWD/reports/:/opt/SYSTAC/reports/ bhreinb/SYSTAC npm config set packageJson:task-profile auto-regression-chrome && npm run e2e-test
希望这是有道理的?
这是一个试探性的快速技巧,可让您使用 -v
选项传入配置参数。
#!/bin/sh
set -e
# Quick and dirty option processing
while [ = '-v' ]; do
case in
*=*)
option=${2%=*}
npm config set "$option" "${2#$option}"
shift 2;;
*)
echo "[=10=]: Fatal error: argument to -v must contain =" >&2
exit 127;;
esac
done
# Aside; use = not == inside [ ... ]
if [ "" = 'npm' ] && [ "" = 'run' ]; then
shift 2
XVFB_SCREEN_WIDTH=${SCREEN_WIDTH-1280}
XVFB_SCREEN_HEIGHT=${SCREEN_HEIGHT-720}
dbus-daemon --session --fork
Xvfb :1 -screen 0 "${XVFB_SCREEN_WIDTH}x${XVFB_SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
export DISPLAY=:1.0
fluxbox >/dev/null 2>&1 &
exec npm run "$@"
fi
exec "$@"
用法:
docker run --rm -it \
-v $PWD/e2e/:/opt/SYSTAC/e2e \
-v $PWD/reports/:/opt/SYSTAC/reports/ \
bhreinb/SYSTAC \
scriptname -v foo=bar \
-v packageJson:task-profile=auto-regression-chrome \
-v baz=quux \
npm run gargleblaster --demo --crash --splinters