1- # To execute this docker compose yml file use `docker compose -f docker-compose-v3-event-driven-arm64.yml up`
2- # Add the `-d` flag at the end for detached execution
3- # To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-event-driven-arm64.yml down`
4- #
5- # This compose file uses the event-driven video recording backend.
6- # The recorder subscribes to Grid's ZeroMQ event bus for session lifecycle events
7- # instead of polling the Node /status endpoint.
81services :
2+ # Start a local FTP server to demonstrate video upload with RCLONE (https://github.com/delfer/docker-alpine-ftp-server)
3+ ftp_server :
4+ image : delfer/alpine-ftp-server:latest
5+ container_name : ftp_server
6+ environment :
7+ - USERS=seluser|selenium.dev
8+ volumes :
9+ # Mount the local directory `/home/${USER}/Videos/upload` to the FTP server's `/ftp/seluser` directory to check out the uploaded videos
10+ - /tmp/upload:/ftp/seluser
11+ command : ["/bin/sh", "-c", "/sbin/tini -- /bin/start_vsftpd.sh && tail -f /dev/null"]
12+ stop_grace_period : 30s
13+
14+ # File browser to manage the uploaded videos from the FTP server
15+ file_browser :
16+ image : filebrowser/filebrowser:latest
17+ container_name : file_browser
18+ restart : always
19+ ports :
20+ - " 8081:80"
21+ volumes :
22+ # Mount the local directory `/tmp/upload` to file browser's `/srv` directory to check out the uploaded videos
23+ - /tmp/upload:/srv
24+ environment :
25+ - FB_NOAUTH=true
26+
927 chrome :
1028 deploy :
1129 mode : replicated
@@ -17,16 +35,24 @@ services:
1735 volumes :
1836 - /tmp/videos:/videos
1937 - ./../selenium_server_deploy.jar:/opt/selenium/selenium-server.jar
38+ - ./../Video/video_service.py:/opt/bin/video_service.py
2039 environment :
2140 - SE_EVENT_BUS_HOST=selenium-hub
2241 - SE_RECORD_VIDEO=true
2342 - SE_VIDEO_FILE_NAME=auto
2443 - SE_EVENT_DRIVEN_SERVICES=true
25- # Only upload videos for failed sessions (optional, default: false)
26- # - SE_UPLOAD_FAILURE_SESSION_ONLY=true
27- # Upload configuration (optional)
28- # - SE_VIDEO_UPLOAD_ENABLED=true
29- # - SE_UPLOAD_DESTINATION_PREFIX=s3://bucket/videos
44+ - SE_VIDEO_UPLOAD_ENABLED=true
45+ # Remote name and destination path to upload
46+ - SE_UPLOAD_DESTINATION_PREFIX=myftp://ftp/seluser
47+ # All configs required for RCLONE to upload to remote name myftp
48+ - RCLONE_CONFIG_MYFTP_TYPE=ftp
49+ - RCLONE_CONFIG_MYFTP_HOST=ftp_server
50+ - RCLONE_CONFIG_MYFTP_PORT=21
51+ - RCLONE_CONFIG_MYFTP_USER=seluser
52+ # Password encrypted using command: rclone obscure <your_password>
53+ - RCLONE_CONFIG_MYFTP_PASS=KkK8RsUIba-MMTBUSnuYIdAKvcnFyLl2pdhQig
54+ - RCLONE_CONFIG_MYFTP_FTP_CONCURRENCY=10
55+ stop_grace_period : 30s
3056
3157 firefox :
3258 deploy :
@@ -39,16 +65,24 @@ services:
3965 volumes :
4066 - /tmp/videos:/videos
4167 - ./../selenium_server_deploy.jar:/opt/selenium/selenium-server.jar
68+ - ./../Video/video_service.py:/opt/bin/video_service.py
4269 environment :
4370 - SE_EVENT_BUS_HOST=selenium-hub
4471 - SE_RECORD_VIDEO=true
4572 - SE_VIDEO_FILE_NAME=auto
4673 - SE_EVENT_DRIVEN_SERVICES=true
47- # Only upload videos for failed sessions (optional, default: false)
48- # - SE_UPLOAD_FAILURE_SESSION_ONLY=true
49- # Upload configuration (optional)
50- # - SE_VIDEO_UPLOAD_ENABLED=true
51- # - SE_UPLOAD_DESTINATION_PREFIX=s3://bucket/videos
74+ - SE_VIDEO_UPLOAD_ENABLED=true
75+ # Remote name and destination path to upload
76+ - SE_UPLOAD_DESTINATION_PREFIX=myftp://ftp/seluser
77+ # All configs required for RCLONE to upload to remote name myftp
78+ - RCLONE_CONFIG_MYFTP_TYPE=ftp
79+ - RCLONE_CONFIG_MYFTP_HOST=ftp_server
80+ - RCLONE_CONFIG_MYFTP_PORT=21
81+ - RCLONE_CONFIG_MYFTP_USER=seluser
82+ # Password encrypted using command: rclone obscure <your_password>
83+ - RCLONE_CONFIG_MYFTP_PASS=KkK8RsUIba-MMTBUSnuYIdAKvcnFyLl2pdhQig
84+ - RCLONE_CONFIG_MYFTP_FTP_CONCURRENCY=10
85+ stop_grace_period : 30s
5286
5387 selenium-hub :
5488 image : selenium/hub:4.40.0-20260204
@@ -59,15 +93,3 @@ services:
5993 - " 4442:4442"
6094 - " 4443:4443"
6195 - " 4444:4444"
62-
63- # File browser to manage the videos from local volume
64- file_browser :
65- image : filebrowser/filebrowser:latest
66- container_name : file_browser
67- restart : always
68- ports :
69- - " 8081:80"
70- volumes :
71- - /tmp/videos:/srv
72- environment :
73- - FB_NOAUTH=true
0 commit comments