이 프로젝트는 수천 시간의 시간을 투자하고 Apache License 2.0에 따라 소스 코드를 무료로 제공한 자원 봉사자들에 의해 가능해졌습니다.
이러한 Docker 이미지에는 사용을 단순화하기 위한 몇 가지 태그가 함께 제공됩니다. 릴리스 중 하나에서 살펴보세요.
새 릴리스에 대한 알림을 받으려면 자신을 "릴리스 전용" 감시자로 추가하세요.
이러한 이미지는 Selenium Docker Hub의 Docker Hub 레지스트리에 게시됩니다.
이러한 Docker 이미지를 사용하는 데 도움이 필요합니까? https://www.selenium.dev/support/에서 우리에게 문의하세요.
--shm-size="2g"docker run -d -p 4444:4444 -p 7900:7900 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101WebDriver 테스트에서 http://localhost:4444를 가리키도록 하세요.
그게 다야!
(선택 사항) 컨테이너 내부에서 무슨 일이 일어나고 있는지 확인하려면 http://localhost:7900/?autoconnect=1&resize=scale&password=secret으로 이동하세요.
컨테이너 활동 시각화에 대한 자세한 내용은 디버깅 섹션을 확인하세요.
☝️ 브라우저가 포함된 이미지에 대해 docker run 실행할 때 --shm-size=2g 플래그를 사용하여 호스트의 공유 메모리를 사용하세요.
☝️ 특정 브라우저와 그리드 버전을 고정하려면 항상 전체 태그가 포함된 Docker 이미지를 사용하세요. 자세한 내용은 태그 지정 규칙을 참조하세요.
이미지 태그 기반 4.21.0 부터 이 프로젝트에서 지원하는 아키텍처는 다음과 같습니다.
| 건축학 | 사용 가능 |
|---|---|
| x86_64(일명 amd64) | ✅ |
| aarch64(일명 arm64/armv8) | ✅ |
| armhf(일명 arm32/armv7l) | ❌ |
멀티 아키텍처 이미지에서는 다음 브라우저를 사용할 수 있습니다.
| 건축학 | 크롬 | 크롬 | 파이어폭스 | 가장자리 |
|---|---|---|---|---|
| x86_64(일명 amd64) | ✅ | ✅ | ✅ | ✅ |
| aarch64(일명 arm64/armv8) | ❌ | ✅ | ✅ | ❌ |
| armhf(일명 arm32/armv7l) | ❌ | ❌ | ❌ | ❌ |
메모:
Google은 Linux/ARM 플랫폼용 Chrome( google-chrome )을 구축하지 않습니다. 따라서 Chrome(노드 및 독립 실행형) 이미지는 AMD64에서만 사용할 수 있습니다. 마찬가지로 Microsoft는 Linux/ARM 플랫폼용 Edge( microsoft-edge )를 구축하지 않습니다.
ARM64 플랫폼에서 에뮬레이션 하에 AMD64 이미지를 실행하는 것은 성능 및 안정성 문제로 인해 권장되지 않습니다.
Linux/ARM의 경우 오픈 소스 Chromium 브라우저를 사용하세요. Chromium(노드 및 독립 실행형) 이미지는 다중 아키텍처로 제공됩니다.
$ docker run --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g selenium/standalone-chromium:latest멀티 아키텍처 이미지는 Linux/ARM64 리소스 클래스를 사용하여 CircleCI에서 테스트되었습니다. 아래 상태를 확인하세요.
Apple M 시리즈 또는 Raspberry Pi와 같은 플랫폼에서 실행되는 실험적인 Docker 컨테이너 이미지의 경우 seleniumhq-community/docker-seleniarm의 저장소는 Seleniam Docker Hub 레지스트리에 게시되는 이미지를 제공했습니다.
이러한 이미지에 대한 자세한 내용은 문제 #1076을 참조하세요.
이제 포크 seleniumhq-community/docker-seleniarm이 병합되었습니다.
Docker 엔진에서 실험적 기능인 Containerd 이미지 저장소를 활성화하는 것이 좋습니다. containerd 단일 이미지 태그가 다양한 OS 및 하드웨어 아키텍처를 포괄하는 다양한 변형을 참조할 수 있는 다중 플랫폼 이미지를 이해합니다. 다양한 플랫폼에서 이미지를 구축, 저장 및 배포하는 프로세스를 단순화합니다.
Docker 엔진에서 해당 기능을 활성화하는 단일 명령은 다음과 같습니다.
make set_containerd_image_store멀티플랫폼용 이미지를 모두 빌드하려면 다음 명령어를 실행하세요.
PLATFORMS=linux/amd64,linux/arm64 make build특정 플랫폼에 대한 이미지를 빌드하려면 다음 명령을 실행하십시오.
PLATFORMS=linux/arm64 make build 기본적으로 PLATFORMS 변수를 지정하지 않으면 이미지는 linux/amd64 플랫폼용으로 빌드됩니다.
Nightly 이미지는 이 저장소의 메인 브랜치에 대한 최신 변경 사항이 포함된 업스트림 프로젝트 Selenium의 Nightly 빌드 위에 구축됩니다. 이미지 태그는 nightly 입니다. 프로덕션에서는 이미지를 사용하지 않는 것이 좋습니다. 테스트 목적으로만 사용됩니다.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:nightlyNightly 이미지를 시작하려면 docker compose를 확인하세요 docker-compose-v3-full-grid-nightly.yml
테스트를 실행하거나 시험판 브라우저로 작업하기 위해 Google, Mozilla 및 Microsoft는 일반 대중에게 곧 출시될 제품을 확인해야 하는 사람들을 위해 개발 및 베타 릴리스 채널을 유지하고 있습니다.
독립형 모드에서 실행하는 방법은 다음과 같습니다.
크롬 베타:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:beta크롬 개발자:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:dev파이어폭스 베타:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:betaFirefox 개발:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:dev엣지 베타:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:beta엣지 개발:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:devdocker-compose-v3-beta-channel.yml:
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-beta-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-beta-channel.yml down`
version: " 3 "
services:
chrome:
image: selenium/node-chrome:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
edge:
image: selenium/node-edge:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
firefox:
image: selenium/node-firefox:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- " 4442:4442 "
- " 4443:4443 "
- " 4444:4444 "도커-작성-v3-dev-channel.yml:
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-dev-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-dev-channel.yml down`
version: " 3 "
services:
chrome:
image: selenium/node-chrome:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
edge:
image: selenium/node-edge:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
firefox:
image: selenium/node-firefox:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- " 4442:4442 "
- " 4443:4443 "
- " 4444:4444 "개발 및 베타 채널 컨테이너 이미지에 대한 자세한 내용은 Docker Selenium을 통한 개발 및 베타 채널 브라우저에 대한 블로그 게시물을 참조하세요.
파이어폭스
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101크롬
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101가장자리
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-edge:4.26.0-20241101 참고: 동시에 하나의 독립형 컨테이너만 포트 4444 에서 실행될 수 있습니다.
이미지를 실행하고 허브와 노드가 포함된 그리드를 생성하는 방법에는 여러 가지가 있습니다. 다음 옵션을 확인하세요.
허브와 노드는 동일한 네트워크에 생성되며 컨테이너 이름으로 서로를 인식합니다. 첫 번째 단계로 Docker 네트워크를 생성해야 합니다.
$ docker network create grid
$ docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-chrome:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-edge:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-firefox:4.26.0-20241101$ docker network create grid
$ docker run - d - p 4442 - 4444 : 4442 - 4444 -- net grid -- name selenium - hub selenium / hub: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - chrome: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - edge: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - firefox: 4.26 . 0 - 20241101그리드 사용을 마치고 컨테이너가 종료되면 다음 명령을 사용하여 네트워크를 제거할 수 있습니다.
# Removes the grid network
$ docker network rm grid허브와 노드는 서로 다른 시스템/VM에 생성되므로 제대로 통신하려면 서로의 IP를 알아야 합니다. 동일한 컴퓨터/VM에서 둘 이상의 노드가 실행되는 경우 서로 다른 포트를 노출하도록 구성해야 합니다.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:4.26.0-20241101$ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 2>
selenium/node-chrome:4.26.0-20241101$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 2> `
selenium / node - chrome: 4.26 . 0 - 20241101 $ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 3>
selenium/node-edge:4.26.0-20241101$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 3> `
selenium / node - edge: 4.26 . 0 - 20241101 $ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 4>
selenium/node-firefox:4.26.0-20241101$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 4> `
selenium / node - firefox: 4.26 . 0 - 20241101 $ docker run -d -p 5556:5556
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 4>
-e SE_NODE_PORT=5556
selenium/node-chrome:4.26.0-20241101$ docker run - d - p 5556 : 5556 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 4> `
- e SE_NODE_PORT = 5556 `
selenium / node - chrome: 4.26 . 0 - 20241101 Docker Compose는 그리드를 시작하는 가장 간단한 방법입니다. 아래 링크된 리소스를 활용하여 로컬에 저장하고 각 파일 상단에서 실행 지침을 확인하세요.
docker-compose-v2.yml
docker-compose-v3.yml
Grid를 중지하고 생성된 컨테이너를 정리하려면 docker compose down 실행하세요.
docker-compose-v3-swarm.yml
모든 구성 요소를 분리한 상태에서 Selenium Grid를 시작할 수 있습니다. 단순화를 위해 docker compose를 사용한 예만 제공됩니다. 파일을 로컬에 저장하고 그 위에 실행 지침을 확인하세요.
docker-compose-v3-full-grid.yml
| 환경변수 | 옵션 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
SE_REJECT_UNSUPPORTED_CAPS | --reject-unsupported-caps | 불리언 | false | 그리드가 요청된 기능을 지원하지 않는 경우 배포자가 요청을 즉시 거부할 수 있도록 허용합니다. |
SE_HEALTHCHECK_INTERVAL | --healthcheck-interval | 정수 | 120 | 이렇게 하면 서버가 일정 간격 후에 모든 노드를 성공적으로 ping할 수 있습니다. |
테스트 실행은 selenium/video:ffmpeg-7.1-20241101 Docker 이미지를 사용하여 기록할 수 있습니다. 브라우저가 실행되는 각 컨테이너마다 하나의 컨테이너가 필요합니다. 즉, 5개의 노드/독립형 컨테이너를 실행하는 경우 5개의 비디오 컨테이너가 필요하며 매핑은 1-1입니다.
현재 이 매핑을 수행하는 유일한 방법은 수동으로 수행하는 것입니다(컨테이너를 수동으로 시작하거나 docker compose 통해 시작). 우리는 이 프로세스를 반복하고 있으며 아마도 이 설정은 앞으로 더 간단해질 것입니다.
우리가 제공하는 비디오 Docker 이미지는 jrottenberg/ffmpeg 프로젝트에서 제공하는 ffmpeg Ubuntu 이미지를 기반으로 합니다. 이 이미지를 제공하고 작업을 단순화해 주셔서 감사합니다.
이미지 태그 기반 4.20.0 부터 비디오 Docker 이미지는 멀티 플랫폼에서 이미지를 사용할 수 있으므로 linuxserver/docker-ffmpeg 프로젝트에서 제공하는 FFmpeg Ubuntu 이미지를 기반으로 합니다. 프로젝트를 단순화하고 다양한 아키텍처 지원을 통해 앞으로 나아갈 수 있도록 도와주셔서 감사합니다.
참고 사항 :
/videos 디렉터리에 저장됩니다. 비디오를 얻으려면 로컬 디렉토리를 매핑하십시오.FILE_NAME 환경 변수를 통해 비디오 파일 이름을 덮어쓰십시오.이 예에서는 컨테이너를 수동으로 시작하는 방법을 보여줍니다.
$ docker network create grid
$ docker run -d -p 4444:4444 -p 6900:5900 --net grid --name selenium --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101
$ docker run -d --net grid --name video -v /tmp/videos:/videos selenium/video:ffmpeg-7.1-20241101
# Run your tests
$ docker stop video && docker rm video
$ docker stop selenium && docker rm selenium 컨테이너가 중지되고 제거되면 머신의 /tmp/videos 디렉터리에 비디오 파일이 표시됩니다.
다음은 허브와 몇 개의 노드를 사용하는 예입니다.
docker-compose-v3-video.yml
테스트에서 메타데이터 지원을 기반으로 합니다. 비디오 레코더가 SE_VIDEO_FILE_NAME=auto 활성화하고 테스트에 메타데이터를 추가하여 브라우저 노드와 함께 배포된 사이드카인 경우 비디오 파일 이름은 se:name 기능의 값을 추출하여 비디오 파일 이름으로 사용합니다.
예를 들어 Python 바인딩에서는 다음과 같습니다.
from selenium . webdriver . chrome . options import Options as ChromeOptions
from selenium import webdriver
options = ChromeOptions ()
options . set_capability ( 'se:name' , 'test_visit_basic_auth_secured_page (ChromeTests)' )
driver = webdriver . Remote ( options = options , command_executor = "http://localhost:4444" )
driver . get ( "https://selenium.dev" )
driver . quit () 출력 비디오 파일 이름은 test_visit_basic_auth_secured_page_ChromeTests_<sessionId>.mp4 입니다.
테스트 이름이 테스트 프레임워크에 의해 처리되고 확실히 고유한 경우 SE_VIDEO_FILE_NAME_SUFFIX=false 설정하여 비디오 파일 이름에 추가되는 세션 ID를 비활성화할 수도 있습니다.
긴 파일 이름을 피하기 위해 파일 이름은 255자로 잘립니다. 또한 space 문자는 _ 로 대체되며 파일 이름에는 알파벳, 숫자, - (하이픈), _ (밑줄) 문자만 유지됩니다.
자르기 정규식은 SE_VIDEO_FILE_NAME_TRIM_REGEX 환경 변수를 설정하여 사용자 정의할 수 있습니다. 기본값은 [:alnum:]-_ 입니다. 정규식은 bash의 tr 명령과 호환되어야 합니다.
배포 수준에서 레코더 컨테이너는 항상 작동 중입니다. 또한 세션 기능 se:recordVideo 통해 비디오 녹화 프로세스를 비활성화할 수 있습니다. 예를 들어 Python 바인딩에서는 다음과 같습니다.
options . set_capability ( 'se:recordVideo' , False ) 레코더 컨테이너에서는 비디오 녹화 프로세스 시작 여부를 결정하기 전에 Node SessionId를 기반으로 허브에서 GraphQL 쿼리를 수행하고 기능에서 se:recordVideo 값을 추출합니다.
참고: GraphQL 엔드포인트에 도달하려면 레코더 컨테이너가 허브 URL을 알아야 합니다. 허브 URL은 환경 변수 SE_NODE_GRID_URL 통해 전달될 수 있습니다. 예를 들어 SE_NODE_GRID_URL http://selenium-hub:4444 입니다.
RCLONE은 비디오 레코더 이미지에 설치됩니다. 이를 사용하여 비디오를 클라우드 스토리지 서비스에 업로드할 수 있습니다. 위에서 언급한 비디오 녹화 외에도 다음 환경 변수를 설정하여 업로드 기능을 활성화할 수 있습니다.
version : " 3 "
services :
chrome_video :
image : selenium/video:ffmpeg-7.1-20241101
depends_on :
- chrome
environment :
- DISPLAY_CONTAINER_NAME=chrome
- SE_VIDEO_FILE_NAME=auto
- SE_VIDEO_UPLOAD_ENABLED=true
- SE_UPLOAD_DESTINATION_PREFIX=s3://mybucket/path
- RCLONE_CONFIG_S3_TYPE=s3
- RCLONE_CONFIG_S3_PROVIDER=GCS
- RCLONE_CONFIG_S3_ENV_AUTH=true
- RCLONE_CONFIG_S3_REGION=asia-southeast1
- RCLONE_CONFIG_S3_LOCATION_CONSTRAINT=asia-southeast1
- RCLONE_CONFIG_S3_ACL=private
- RCLONE_CONFIG_S3_ACCESS_KEY_ID=xxx
- RCLONE_CONFIG_S3_SECRET_ACCESS_KEY=xxx
- RCLONE_CONFIG_S3_ENDPOINT=https://storage.googleapis.com
- RCLONE_CONFIG_S3_NO_CHECK_BUCKET=true SE_VIDEO_FILE_NAME=auto 세션 ID를 비디오 파일 이름으로 사용합니다. 이렇게 하면 업로드할 동영상 파일 이름이 고유해집니다. 비디오 파일 이름 구성은 노드 엔드포인트 /status (및 선택적 GraphQL 엔드포인트)를 기반으로 자동으로 작동하여 세션 ID, 기능을 가져옵니다.
SE_VIDEO_UPLOAD_ENABLED=true 비디오 업로드 기능을 활성화합니다. 백그라운드에서는 업로더가 사용하고 진행할 수 있는 파일과 대상이 포함된 파이프파일을 생성합니다.
SE_VIDEO_INTERNAL_UPLOAD=true 업로드를 위해 컨테이너에 설치된 RCLONE을 사용합니다. 업로드에 다른 사이드카 컨테이너를 사용하려면 false 로 설정하세요.
| 모드별 ENV 변수 | 허브/노드 | 독립형 역할 | 동적 그리드 |
|---|---|---|---|
SE_VIDEO_RECORD_STANDALONE (필수) | false (기본값) | true | true |
DISPLAY_CONTAINER_NAME (필수) | 사용자 입력 | 사용자 입력 | (필수는 아님) |
SE_NODE_PORT (선택사항) | 5555 | 4444 | (필수는 아님) |
SE_NODE_GRID_URL (선택사항) | 사용자 입력 | (필수는 아님) | (필수는 아님) |
접두사가 있는 환경 변수의 경우 RCLONE_ 원격 구성을 RCLONE에 전달하는 데 사용됩니다. RCLONE 구성에 대한 자세한 내용은 여기에서 확인할 수 있습니다. Dynamic Grid에서 사용할 때 해당 변수는 SE_ 접두사와 결합되어야 합니다(예: SE_RCLONE_ . 자세한 내용은 아래 참조를 확인하세요.
허브 및 노드에 대한 비디오 녹화 및 업로드 구성: docker-compose-v3-video-upload.yml
독립형 역할에 대한 비디오 녹화 및 업로드 구성: docker-compose-v3-video-upload-standalone.yml
Dynamic Grid(node-docker)에 대한 비디오 녹화 및 업로드 구성: docker-compose-v3-video-upload-dynamic-grid.yml
Dynamic Grid 독립형(standalone-docker)에 대한 비디오 녹화 및 업로드 구성: 테스트/docker-compose-v3-test-standalone-docker.yaml
| 환경변수 | 기본값 | 설명 |
|---|---|---|
SE_UPLOAD_RETAIN_LOCAL_FILE | false | 성공적으로 업로드한 후 로컬 파일 유지 |
SE_UPLOAD_COMMAND | copy | RCLONE 명령은 파일을 전송하는 데 사용됩니다. 로컬 파일 유지가 false 인 경우 move 적용 |
SE_UPLOAD_OPTS | -P --cutoff-mode SOFT --metadata --inplace | RCLONE 명령에 속하는 다른 옵션을 설정할 수 있습니다. |
SE_UPLOAD_CONFIG_FILE_NAME | upload.conf | env 변수 접두사 SE_RCLONE_*를 통해 설정하는 대신 원격 호스트에 대한 구성 파일 |
SE_UPLOAD_CONFIG_DIRECTORY | /opt/bin | config 파일의 디렉터리 (다른 디렉터리의 conf 파일이 마운트되면 변경) |
Grid 4에는 요청 시 Docker 컨테이너를 시작할 수 있는 기능이 있습니다. 즉, 각 새 세션 요청에 대해 백그라운드에서 Docker 컨테이너를 시작하고 그곳에서 테스트가 실행되며 테스트가 완료되면 컨테이너가 폐기됩니다.
이 실행 모드는 독립형 또는 노드 역할에서 사용할 수 있습니다. 컨테이너가 시작될 때 사용할 Docker 이미지를 "동적" 실행 모드에 알려야 합니다. 또한 Grid는 Docker 데몬의 URI를 알아야 합니다. 이 구성은 로컬 toml 파일에 배치될 수 있습니다.
이 파일을 로컬에 저장하고 이름을 config.toml 과 같이 지정할 수 있습니다.
[ docker ]
# Configs have a mapping between the Docker image to use and the capabilities that need to be matched to
# start a container with the given image.
configs = [
" selenium/standalone-firefox:4.26.0-20241101 " , ' {"browserName": "firefox"} ' ,
" selenium/standalone-chrome:4.26.0-20241101 " , ' {"browserName": "chrome"} ' ,
" selenium/standalone-edge:4.26.0-20241101 " , ' {"browserName": "MicrosoftEdge"} '
]
host-config-keys = [ " Dns " , " DnsOptions " , " DnsSearch " , " ExtraHosts " , " Binds " ]
# URL for connecting to the docker daemon
# Most simple approach, leave it as http://127.0.0.1:2375, and mount /var/run/docker.sock.
# 127.0.0.1 is used because internally the container uses socat when /var/run/docker.sock is mounted
# If var/run/docker.sock is not mounted:
# Windows: make sure Docker Desktop exposes the daemon via tcp, and use http://host.docker.internal:2375.
# macOS: install socat and run the following command, socat -4 TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock,
# then use http://host.docker.internal:2375.
# Linux: varies from machine to machine, please mount /var/run/docker.sock. If this does not work, please create an issue.
url = " http://127.0.0.1:2375 "
# Docker image used for video recording
video-image = " selenium/video:ffmpeg-7.1-20241101 "
# Uncomment the following section if you are running the node on a separate VM
# Fill out the placeholders with appr