From 8d698040d8fd3f62ce43d5cb1c32bbccd4f76a91 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Mon, 7 Apr 2025 06:28:18 +0700 Subject: [PATCH] Breaking changes: Node/Standalone Docker config path change to `/opt/selenium/docker.toml` Signed-off-by: Viet Nguyen Duc --- ENV_VARIABLES.md | 2 +- NodeDocker/Dockerfile | 5 +++-- NodeDocker/config.toml | 2 ++ README.md | 19 +++++++++++-------- .../start-selenium-grid-docker.sh | 4 ++++ docker-compose-v3-dynamic-grid.yml | 2 +- ...r-compose-v3-video-upload-dynamic-grid.yml | 2 +- scripts/generate_list_env_vars/value.yaml | 2 +- tests/docker-compose-v3-test-node-docker.yaml | 1 - ...ker-compose-v3-test-standalone-docker.yaml | 2 +- 10 files changed, 25 insertions(+), 16 deletions(-) diff --git a/ENV_VARIABLES.md b/ENV_VARIABLES.md index ba973fde63..e885142b0c 100644 --- a/ENV_VARIABLES.md +++ b/ENV_VARIABLES.md @@ -102,7 +102,7 @@ | SE_DISTRIBUTOR_HOST | | | | | SE_DISTRIBUTOR_PORT | 5553 | | | | SE_GRID_URL | | | --grid-url | -| SE_NODE_DOCKER_CONFIG_FILENAME | | | | +| SE_NODE_DOCKER_CONFIG_FILENAME | docker.toml | | | | SE_NODE_GRACEFUL_SHUTDOWN | | | | | SE_VIDEO_CONTAINER_NAME | | | | | SE_RECORD_VIDEO | true | | | diff --git a/NodeDocker/Dockerfile b/NodeDocker/Dockerfile index b7b7fd5068..b33c154b0a 100644 --- a/NodeDocker/Dockerfile +++ b/NodeDocker/Dockerfile @@ -25,10 +25,11 @@ COPY --chown="${SEL_UID}:${SEL_GID}" start-selenium-grid-docker.sh \ start-socat.sh \ /opt/bin/ -COPY --chown="${SEL_UID}:${SEL_GID}" config.toml /opt/selenium/ +COPY --chown="${SEL_UID}:${SEL_GID}" config.toml /opt/selenium/docker.toml COPY selenium-grid-docker.conf /etc/supervisor/conf.d/ ENV SE_OTEL_SERVICE_NAME="selenium-node-docker" \ SE_EVENT_BUS_PUBLISH_PORT="4442" \ - SE_EVENT_BUS_SUBSCRIBE_PORT="4443" + SE_EVENT_BUS_SUBSCRIBE_PORT="4443" \ + SE_NODE_DOCKER_CONFIG_FILENAME="docker.toml" diff --git a/NodeDocker/config.toml b/NodeDocker/config.toml index 9a1b16117b..fced6370a8 100644 --- a/NodeDocker/config.toml +++ b/NodeDocker/config.toml @@ -6,6 +6,8 @@ configs = [ "selenium/standalone-chrome:4.30.0-20250323", '{"browserName": "chrome", "platformName": "linux"}', "selenium/standalone-edge:4.30.0-20250323", '{"browserName": "MicrosoftEdge", "platformName": "linux"}' ] +# Share configs of volumes, DNS, extra hosts between node-docker and node browser containers +host-config-keys = ["Dns", "DnsOptions", "DnsSearch", "ExtraHosts", "Binds"] # URL for connecting to the docker daemon # host.docker.internal works for macOS and Windows. diff --git a/README.md b/README.md index 204f03e0e8..ad890e920e 100644 --- a/README.md +++ b/README.md @@ -753,6 +753,9 @@ video-image = "selenium/video:ffmpeg-7.1.1.1-20250323" #port = ``` +**Mount the local `config.toml` file to the container path `/opt/selenium/docker.toml`**. +This config file path specific for Dynamic Grid (node/standalone docker) by default to avoid conflict with the config file in node browser containers (since users can share volumes config to node browser containers, see below section for details). + With the optional config key `host-config-keys` under section [docker] in a config.toml file (or CLI option --docker-host-config-keys). Users can specify a list of docker host configuration keys that should be passed to browser containers. Valid key names for Docker host config can be found in the Docker API [documentation](https://docs.docker.com/engine/api/latest/#tag/Container/operation/ContainerCreate) or via the command `docker inspect` the node-docker container. @@ -799,7 +802,7 @@ virtual machines. $ docker network create grid $ docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.30.0-20250323 $ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \ - -v ${PWD}/config.toml:/opt/selenium/config.toml \ + -v ${PWD}/config.toml:/opt/selenium/docker.toml \ -v ${PWD}/assets:/opt/selenium/assets \ -v /var/run/docker.sock:/var/run/docker.sock \ selenium/node-docker:4.30.0-20250323 @@ -811,7 +814,7 @@ $ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \ $ docker network create grid $ docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.30.0-20250323 $ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub ` - -v ${PWD}/config.toml:/opt/selenium/config.toml ` + -v ${PWD}/config.toml:/opt/selenium/docker.toml ` -v ${PWD}/assets:/opt/selenium/assets ` -v /var/run/docker.sock:/var/run/docker.sock ` selenium/node-docker:4.30.0-20250323 @@ -832,7 +835,7 @@ $ docker network rm grid ```bash docker run --rm --name selenium-docker -p 4444:4444 \ - -v ${PWD}/config.toml:/opt/selenium/config.toml \ + -v ${PWD}/config.toml:/opt/selenium/docker.toml \ -v ${PWD}/assets:/opt/selenium/assets \ -v /var/run/docker.sock:/var/run/docker.sock \ selenium/standalone-docker:4.30.0-20250323 @@ -842,7 +845,7 @@ docker run --rm --name selenium-docker -p 4444:4444 \ ```bash docker run --rm --name selenium-docker -p 4444:4444 ` - -v ${PWD}/config.toml:/opt/selenium/config.toml ` + -v ${PWD}/config.toml:/opt/selenium/docker.toml ` -v ${PWD}/assets:/opt/selenium/assets ` -v /var/run/docker.sock:/var/run/docker.sock ` selenium/standalone-docker:4.30.0-20250323 @@ -863,7 +866,7 @@ $ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:4.30.0-2 ```bash $ docker run -d -p 5555:5555 \ -e SE_EVENT_BUS_HOST= \ - -v ${PWD}/config.toml:/opt/selenium/config.toml \ + -v ${PWD}/config.toml:/opt/selenium/docker.toml \ -v ${PWD}/assets:/opt/selenium/assets \ -v /var/run/docker.sock:/var/run/docker.sock \ selenium/node-docker:4.30.0-20250323 @@ -874,7 +877,7 @@ $ docker run -d -p 5555:5555 \ ```bash $ docker run -d -p 5555:5555 ` -e SE_EVENT_BUS_HOST= ` - -v ${PWD}/config.toml:/opt/selenium/config.toml ` + -v ${PWD}/config.toml:/opt/selenium/docker.toml ` -v ${PWD}/assets:/opt/selenium/assets ` -v /var/run/docker.sock:/var/run/docker.sock ` selenium/node-docker:4.30.0-20250323 @@ -932,7 +935,7 @@ be forwared and set in the container. You can set the desired environment variab ```bash docker run --rm --name selenium-docker -p 4444:4444 \ -e SE_NODE_SESSION_TIMEOUT=700 \ - -v ${PWD}/config.toml:/opt/selenium/config.toml \ + -v ${PWD}/config.toml:/opt/selenium/docker.toml \ -v ${PWD}/assets:/opt/selenium/assets \ -v /var/run/docker.sock:/var/run/docker.sock \ selenium/standalone-docker:4.30.0-20250323 @@ -943,7 +946,7 @@ docker run --rm --name selenium-docker -p 4444:4444 \ ```bash docker run --rm --name selenium-docker -p 4444:4444 ` -e SE_NODE_SESSION_TIMEOUT=700 ` - -v ${PWD}/config.toml:/opt/selenium/config.toml ` + -v ${PWD}/config.toml:/opt/selenium/docker.toml ` -v ${PWD}/assets:/opt/selenium/assets ` -v /var/run/docker.sock:/var/run/docker.sock ` selenium/standalone-docker:4.30.0-20250323 diff --git a/StandaloneDocker/start-selenium-grid-docker.sh b/StandaloneDocker/start-selenium-grid-docker.sh index ac47e19318..83942fbe62 100755 --- a/StandaloneDocker/start-selenium-grid-docker.sh +++ b/StandaloneDocker/start-selenium-grid-docker.sh @@ -94,6 +94,10 @@ if [ "${SE_ENABLE_TLS}" = "true" ]; then fi fi +if [ ! -z "${SE_NODE_DOCKER_CONFIG_FILENAME}" ]; then + CONFIG_FILE="/opt/selenium/${SE_NODE_DOCKER_CONFIG_FILENAME}" +fi + echo "Selenium Grid Standalone Docker configuration: " cat "${CONFIG_FILE}" diff --git a/docker-compose-v3-dynamic-grid.yml b/docker-compose-v3-dynamic-grid.yml index 4657f1c5e9..62cc2c5c64 100644 --- a/docker-compose-v3-dynamic-grid.yml +++ b/docker-compose-v3-dynamic-grid.yml @@ -6,7 +6,7 @@ services: image: selenium/node-docker:4.30.0-20250323 volumes: - ./assets:/opt/selenium/assets - - ./NodeDocker/config.toml:/opt/selenium/config.toml + - ./NodeDocker/config.toml:/opt/selenium/docker.toml - /var/run/docker.sock:/var/run/docker.sock depends_on: - selenium-hub diff --git a/docker-compose-v3-video-upload-dynamic-grid.yml b/docker-compose-v3-video-upload-dynamic-grid.yml index 63d98b1495..e9e10356af 100644 --- a/docker-compose-v3-video-upload-dynamic-grid.yml +++ b/docker-compose-v3-video-upload-dynamic-grid.yml @@ -18,7 +18,7 @@ services: image: selenium/node-docker:4.30.0-20250323 volumes: - ./assets:/opt/selenium/assets - - ./NodeDocker/config.toml:/opt/selenium/config.toml + - ./NodeDocker/config.toml:/opt/selenium/docker.toml - /var/run/docker.sock:/var/run/docker.sock depends_on: - selenium-hub diff --git a/scripts/generate_list_env_vars/value.yaml b/scripts/generate_list_env_vars/value.yaml index 864b3815a9..1942019c86 100644 --- a/scripts/generate_list_env_vars/value.yaml +++ b/scripts/generate_list_env_vars/value.yaml @@ -81,7 +81,7 @@ - name: SE_NODE_CONTAINER_NAME default: '' - name: SE_NODE_DOCKER_CONFIG_FILENAME - default: '' + default: docker.toml - name: SE_NODE_ENABLE_CDP default: '' - name: SE_NODE_ENABLE_MANAGED_DOWNLOADS diff --git a/tests/docker-compose-v3-test-node-docker.yaml b/tests/docker-compose-v3-test-node-docker.yaml index acd715c6f3..83361f0bc7 100644 --- a/tests/docker-compose-v3-test-node-docker.yaml +++ b/tests/docker-compose-v3-test-node-docker.yaml @@ -16,7 +16,6 @@ services: - selenium-hub - ftp_server environment: - - SE_NODE_DOCKER_CONFIG_FILENAME=docker.toml - SE_EVENT_BUS_HOST=selenium-hub - SE_NODE_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS} - SE_OPTS=--enable-managed-downloads ${SELENIUM_ENABLE_MANAGED_DOWNLOADS} diff --git a/tests/docker-compose-v3-test-standalone-docker.yaml b/tests/docker-compose-v3-test-standalone-docker.yaml index 42780887ea..72c5afa448 100644 --- a/tests/docker-compose-v3-test-standalone-docker.yaml +++ b/tests/docker-compose-v3-test-standalone-docker.yaml @@ -5,7 +5,7 @@ services: - ftp_server volumes: - ./videos:/opt/selenium/assets - - ./videos/config.toml:/opt/selenium/config.toml + - ./videos/config.toml:/opt/selenium/docker.toml - /var/run/docker.sock:/var/run/docker.sock environment: - SE_VNC_NO_PASSWORD=true