Skip to content

Commit b16020d

Browse files
committed
updates
1 parent 2276bec commit b16020d

File tree

5 files changed

+83
-3
lines changed

5 files changed

+83
-3
lines changed

docker-compose.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
version: '3.7'
2+
3+
services:
4+
5+
hub:
6+
image: selenium/hub:3.141.59
7+
ports:
8+
- 4444:4444
9+
deploy:
10+
mode: replicated
11+
replicas: 1
12+
placement:
13+
constraints:
14+
- node.role == worker
15+
16+
chrome:
17+
image: selenium/node-chrome:3.141.59
18+
volumes:
19+
- /dev/urandom:/dev/random
20+
depends_on:
21+
- hub
22+
environment:
23+
- HUB_PORT_4444_TCP_ADDR=hub
24+
- HUB_PORT_4444_TCP_PORT=4444
25+
- NODE_MAX_SESSION=1
26+
entrypoint: bash -c 'SE_OPTS="-host $$HOSTNAME -port 5555" /opt/bin/entry_point.sh'
27+
ports:
28+
- 5555:5555
29+
deploy:
30+
replicas: 1
31+
placement:
32+
constraints:
33+
- node.role == worker

project/create.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
3+
4+
echo "Spinning up four droplets..."
5+
6+
for i in 1 2 3 4; do
7+
docker-machine create \
8+
--driver digitalocean \
9+
--digitalocean-access-token $DIGITAL_OCEAN_ACCESS_TOKEN \
10+
node-$i;
11+
done
12+
13+
14+
echo "Initializing Swarm mode..."
15+
16+
docker-machine ssh node-1 -- docker swarm init --advertise-addr $(docker-machine ip node-1)
17+
18+
19+
echo "Adding the nodes to the Swarm..."
20+
21+
TOKEN=`docker-machine ssh node-1 docker swarm join-token worker | grep token | awk '{ print $5 }'`
22+
23+
docker-machine ssh node-2 "docker swarm join --token ${TOKEN} $(docker-machine ip node-1):2377"
24+
docker-machine ssh node-3 "docker swarm join --token ${TOKEN} $(docker-machine ip node-1):2377"
25+
docker-machine ssh node-4 "docker swarm join --token ${TOKEN} $(docker-machine ip node-1):2377"
26+
27+
28+
echo "Deploying Selenium Grid to http://$(docker-machine ip node-1):4444"
29+
30+
eval $(docker-machine env node-1)
31+
docker stack deploy --compose-file=docker-compose.yml selenium
32+
docker service scale selenium_chrome=5

project/destroy.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
3+
4+
echo "Bringing down the services"
5+
6+
docker service rm selenium_chrome
7+
docker service rm selenium_hub
8+
9+
10+
echo "Bringing down the droplets"
11+
12+
docker-machine rm node-1 node-2 node-3 node-4 -y

project/scrapers/scraper.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44
from selenium.webdriver.common.by import By
55
from selenium.webdriver.support.ui import WebDriverWait
66
from selenium.webdriver.support import expected_conditions as EC
7+
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
78
from bs4 import BeautifulSoup
89

910

10-
def get_driver():
11+
def get_driver(address):
1112
# initialize options
1213
options = webdriver.ChromeOptions()
1314
# pass in headless argument to options
1415
options.add_argument('--headless')
1516
# initialize driver
16-
driver = webdriver.Chrome(chrome_options=options)
17+
driver = webdriver.Remote(
18+
command_executor=f'http://{address}:4444/wd/hub',
19+
desired_capabilities=DesiredCapabilities.CHROME)
1720
return driver
1821

1922

project/script.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def run_process(browser, page_number=1):
1515

1616

1717
if __name__ == '__main__':
18-
browser = get_driver()
18+
browser = get_driver(sys.argv[2])
1919
data = run_process(browser, sys.argv[1])
2020
browser.quit()
2121
print(f'Finished page {sys.argv[1]}')

0 commit comments

Comments
 (0)