webdriver remote bad configuration?

I’m using docker compose in a VM with only two containers, one is an api (flask) that uses selenium and the other one is the docker image: selenium/standalone-chrome:latest. The problem is when i docker compose up locally it runs just fine hitting localhost:5000 for example the api starts the scraping without any issue.

But when i try to do it on the virtual machina using the ipv4:port (ex: 132.45.22.110:5000) this huge error appears:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>
deploy_argy-flask-app-1 | INFO:werkzeug:45.70.185.230 - - [28/May/2024 15:31:18] "GET /start HTTP/1.1" 200 -
deploy_argy-flask-app-1 | /app/argy.py:132: DeprecationWarning: desired_capabilities has been deprecated, please pass in an Options object with options kwarg
deploy_argy-flask-app-1 | driver = webdriver.Remote(
deploy_argy-flask-app-1 | WARNING:urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b995b0>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session
deploy_argy-flask-app-1 | WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b996d0>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session
deploy_argy-flask-app-1 | WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b99820>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session
deploy_argy-flask-app-1 | Exception in thread Thread-3:
deploy_argy-flask-app-1 | Traceback (most recent call last):
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 198, in _new_conn
deploy_argy-flask-app-1 | sock = connection.create_connection(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 85, in create_connection
deploy_argy-flask-app-1 | raise err
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 73, in create_connection
deploy_argy-flask-app-1 | sock.connect(sa)
deploy_argy-flask-app-1 | ConnectionRefusedError: [Errno 111] Connection refused
deploy_argy-flask-app-1 |
deploy_argy-flask-app-1 | The above exception was the direct cause of the following exception:
deploy_argy-flask-app-1 |
deploy_argy-flask-app-1 | Traceback (most recent call last):
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 793, in urlopen
deploy_argy-flask-app-1 | response = self._make_request(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 496, in _make_request
deploy_argy-flask-app-1 | conn.request(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 400, in request
deploy_argy-flask-app-1 | self.endheaders()
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/http/client.py", line 1251, in endheaders
deploy_argy-flask-app-1 | self._send_output(message_body, encode_chunked=encode_chunked)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/http/client.py", line 1011, in _send_output
deploy_argy-flask-app-1 | self.send(msg)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/http/client.py", line 951, in send
deploy_argy-flask-app-1 | self.connect()
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 238, in connect
deploy_argy-flask-app-1 | self.sock = self._new_conn()
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 213, in _new_conn
deploy_argy-flask-app-1 | raise NewConnectionError(
deploy_argy-flask-app-1 | urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7ebd65b999d0>: Failed to establish a new connection: [Errno 111] Connection refused
deploy_argy-flask-app-1 |
deploy_argy-flask-app-1 | The above exception was the direct cause of the following exception:
deploy_argy-flask-app-1 |
deploy_argy-flask-app-1 | Traceback (most recent call last):
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
deploy_argy-flask-app-1 | self.run()
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/threading.py", line 870, in run
deploy_argy-flask-app-1 | self._target(*self._args, **self._kwargs)
deploy_argy-flask-app-1 | File "/app/argy.py", line 132, in scraping_loop
deploy_argy-flask-app-1 | driver = webdriver.Remote(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 286, in __init__
deploy_argy-flask-app-1 | self.start_session(capabilities, browser_profile)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 378, in start_session
deploy_argy-flask-app-1 | response = self.execute(Command.NEW_SESSION, parameters)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 438, in execute
deploy_argy-flask-app-1 | response = self.command_executor.execute(driver_command, params)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 290, in execute
deploy_argy-flask-app-1 | return self._request(command_info[0], url, body=data)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 311, in _request
deploy_argy-flask-app-1 | response = self._conn.request(method, url, body=body, headers=headers)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/_request_methods.py", line 144, in request
deploy_argy-flask-app-1 | return self.request_encode_body(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/_request_methods.py", line 279, in request_encode_body
deploy_argy-flask-app-1 | return self.urlopen(method, url, **extra_kw)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 444, in urlopen
deploy_argy-flask-app-1 | response = conn.urlopen(method, u.request_uri, **kw)
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen
deploy_argy-flask-app-1 | return self.urlopen(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen
deploy_argy-flask-app-1 | return self.urlopen(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen
deploy_argy-flask-app-1 | return self.urlopen(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 847, in urlopen
deploy_argy-flask-app-1 | retries = retries.increment(
deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 515, in increment
deploy_argy-flask-app-1 | raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
deploy_argy-flask-app-1 | urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b999d0>: Failed to establish a new connection: [Errno 111] Connection refused'))
</code>
<code> deploy_argy-flask-app-1 | INFO:werkzeug:45.70.185.230 - - [28/May/2024 15:31:18] "GET /start HTTP/1.1" 200 - deploy_argy-flask-app-1 | /app/argy.py:132: DeprecationWarning: desired_capabilities has been deprecated, please pass in an Options object with options kwarg deploy_argy-flask-app-1 | driver = webdriver.Remote( deploy_argy-flask-app-1 | WARNING:urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b995b0>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session deploy_argy-flask-app-1 | WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b996d0>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session deploy_argy-flask-app-1 | WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b99820>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session deploy_argy-flask-app-1 | Exception in thread Thread-3: deploy_argy-flask-app-1 | Traceback (most recent call last): deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 198, in _new_conn deploy_argy-flask-app-1 | sock = connection.create_connection( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 85, in create_connection deploy_argy-flask-app-1 | raise err deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 73, in create_connection deploy_argy-flask-app-1 | sock.connect(sa) deploy_argy-flask-app-1 | ConnectionRefusedError: [Errno 111] Connection refused deploy_argy-flask-app-1 | deploy_argy-flask-app-1 | The above exception was the direct cause of the following exception: deploy_argy-flask-app-1 | deploy_argy-flask-app-1 | Traceback (most recent call last): deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 793, in urlopen deploy_argy-flask-app-1 | response = self._make_request( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 496, in _make_request deploy_argy-flask-app-1 | conn.request( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 400, in request deploy_argy-flask-app-1 | self.endheaders() deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/http/client.py", line 1251, in endheaders deploy_argy-flask-app-1 | self._send_output(message_body, encode_chunked=encode_chunked) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/http/client.py", line 1011, in _send_output deploy_argy-flask-app-1 | self.send(msg) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/http/client.py", line 951, in send deploy_argy-flask-app-1 | self.connect() deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 238, in connect deploy_argy-flask-app-1 | self.sock = self._new_conn() deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 213, in _new_conn deploy_argy-flask-app-1 | raise NewConnectionError( deploy_argy-flask-app-1 | urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7ebd65b999d0>: Failed to establish a new connection: [Errno 111] Connection refused deploy_argy-flask-app-1 | deploy_argy-flask-app-1 | The above exception was the direct cause of the following exception: deploy_argy-flask-app-1 | deploy_argy-flask-app-1 | Traceback (most recent call last): deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner deploy_argy-flask-app-1 | self.run() deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/threading.py", line 870, in run deploy_argy-flask-app-1 | self._target(*self._args, **self._kwargs) deploy_argy-flask-app-1 | File "/app/argy.py", line 132, in scraping_loop deploy_argy-flask-app-1 | driver = webdriver.Remote( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 286, in __init__ deploy_argy-flask-app-1 | self.start_session(capabilities, browser_profile) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 378, in start_session deploy_argy-flask-app-1 | response = self.execute(Command.NEW_SESSION, parameters) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 438, in execute deploy_argy-flask-app-1 | response = self.command_executor.execute(driver_command, params) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 290, in execute deploy_argy-flask-app-1 | return self._request(command_info[0], url, body=data) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 311, in _request deploy_argy-flask-app-1 | response = self._conn.request(method, url, body=body, headers=headers) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/_request_methods.py", line 144, in request deploy_argy-flask-app-1 | return self.request_encode_body( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/_request_methods.py", line 279, in request_encode_body deploy_argy-flask-app-1 | return self.urlopen(method, url, **extra_kw) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 444, in urlopen deploy_argy-flask-app-1 | response = conn.urlopen(method, u.request_uri, **kw) deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen deploy_argy-flask-app-1 | return self.urlopen( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen deploy_argy-flask-app-1 | return self.urlopen( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen deploy_argy-flask-app-1 | return self.urlopen( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 847, in urlopen deploy_argy-flask-app-1 | retries = retries.increment( deploy_argy-flask-app-1 | File "/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 515, in increment deploy_argy-flask-app-1 | raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] deploy_argy-flask-app-1 | urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b999d0>: Failed to establish a new connection: [Errno 111] Connection refused')) </code>

    deploy_argy-flask-app-1            | INFO:werkzeug:45.70.185.230 - - [28/May/2024 15:31:18] "GET /start HTTP/1.1" 200 -
    deploy_argy-flask-app-1            | /app/argy.py:132: DeprecationWarning: desired_capabilities has been deprecated, please pass in an Options object with options kwarg
    deploy_argy-flask-app-1            |   driver = webdriver.Remote(
    deploy_argy-flask-app-1            | WARNING:urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b995b0>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session
    deploy_argy-flask-app-1            | WARNING:urllib3.connectionpool:Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b996d0>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session
    deploy_argy-flask-app-1            | WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b99820>: Failed to establish a new connection: [Errno 111] Connection refused')': /wd/hub/session
    deploy_argy-flask-app-1            | Exception in thread Thread-3:
    deploy_argy-flask-app-1            | Traceback (most recent call last):
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 198, in _new_conn
    deploy_argy-flask-app-1            |     sock = connection.create_connection(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 85, in create_connection
    deploy_argy-flask-app-1            |     raise err
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 73, in create_connection
    deploy_argy-flask-app-1            |     sock.connect(sa)
    deploy_argy-flask-app-1            | ConnectionRefusedError: [Errno 111] Connection refused
    deploy_argy-flask-app-1            |
    deploy_argy-flask-app-1            | The above exception was the direct cause of the following exception:
    deploy_argy-flask-app-1            |
    deploy_argy-flask-app-1            | Traceback (most recent call last):
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 793, in urlopen
    deploy_argy-flask-app-1            |     response = self._make_request(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 496, in _make_request
    deploy_argy-flask-app-1            |     conn.request(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 400, in request
    deploy_argy-flask-app-1            |     self.endheaders()
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/http/client.py", line 1251, in endheaders
    deploy_argy-flask-app-1            |     self._send_output(message_body, encode_chunked=encode_chunked)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/http/client.py", line 1011, in _send_output
    deploy_argy-flask-app-1            |     self.send(msg)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/http/client.py", line 951, in send
    deploy_argy-flask-app-1            |     self.connect()
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 238, in connect
    deploy_argy-flask-app-1            |     self.sock = self._new_conn()
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 213, in _new_conn
    deploy_argy-flask-app-1            |     raise NewConnectionError(
    deploy_argy-flask-app-1            | urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7ebd65b999d0>: Failed to establish a new connection: [Errno 111] Connection refused
    deploy_argy-flask-app-1            |
    deploy_argy-flask-app-1            | The above exception was the direct cause of the following exception:
    deploy_argy-flask-app-1            |
    deploy_argy-flask-app-1            | Traceback (most recent call last):
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    deploy_argy-flask-app-1            |     self.run()
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/threading.py", line 870, in run
    deploy_argy-flask-app-1            |     self._target(*self._args, **self._kwargs)
    deploy_argy-flask-app-1            |   File "/app/argy.py", line 132, in scraping_loop
    deploy_argy-flask-app-1            |     driver = webdriver.Remote(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 286, in __init__
    deploy_argy-flask-app-1            |     self.start_session(capabilities, browser_profile)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 378, in start_session
    deploy_argy-flask-app-1            |     response = self.execute(Command.NEW_SESSION, parameters)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 438, in execute
    deploy_argy-flask-app-1            |     response = self.command_executor.execute(driver_command, params)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 290, in execute
    deploy_argy-flask-app-1            |     return self._request(command_info[0], url, body=data)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 311, in _request
    deploy_argy-flask-app-1            |     response = self._conn.request(method, url, body=body, headers=headers)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/_request_methods.py", line 144, in request
    deploy_argy-flask-app-1            |     return self.request_encode_body(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/_request_methods.py", line 279, in request_encode_body
    deploy_argy-flask-app-1            |     return self.urlopen(method, url, **extra_kw)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 444, in urlopen
    deploy_argy-flask-app-1            |     response = conn.urlopen(method, u.request_uri, **kw)
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen
    deploy_argy-flask-app-1            |     return self.urlopen(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen
    deploy_argy-flask-app-1            |     return self.urlopen(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 877, in urlopen
    deploy_argy-flask-app-1            |     return self.urlopen(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 847, in urlopen
    deploy_argy-flask-app-1            |     retries = retries.increment(
    deploy_argy-flask-app-1            |   File "/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 515, in increment
    deploy_argy-flask-app-1            |     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    deploy_argy-flask-app-1            | urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ebd65b999d0>: Failed to establish a new connection: [Errno 111] Connection refused'))

I think it might be an issue with how i set up my webdriver remote so here goes some information:

docker-compose.yml :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>
version: '3.8'
services:
flask-app:
build: .
ports:
- "5000:5000"
depends_on:
- selenium-standalone
environment:
- FLASK_ENV=development
env_file:
- .env
networks:
- my-network
selenium-standalone:
image: selenium/standalone-chrome:latest
ports:
- "4444:4444"
- "7900:7900"
shm_size: 2gb
privileged: true
networks:
- my-network
networks:
my-network:
driver: bridge
</code>
<code> version: '3.8' services: flask-app: build: . ports: - "5000:5000" depends_on: - selenium-standalone environment: - FLASK_ENV=development env_file: - .env networks: - my-network selenium-standalone: image: selenium/standalone-chrome:latest ports: - "4444:4444" - "7900:7900" shm_size: 2gb privileged: true networks: - my-network networks: my-network: driver: bridge </code>

    version: '3.8'
    
    services:
      flask-app:
        build: .
        ports:
          - "5000:5000"
        depends_on:
          - selenium-standalone
        environment:
          - FLASK_ENV=development
        env_file:
          - .env
        networks:
          - my-network
      
      selenium-standalone:
        image: selenium/standalone-chrome:latest
        ports:
          - "4444:4444"
          - "7900:7900"
        shm_size: 2gb
        privileged: true
        networks:
          - my-network
    
    networks:
      my-network:
        driver: bridge

selenium config in the script:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("privileged")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--disable-software-rasterizer")
chrome_options.add_argument("--window-size=1920,1080")
driver = webdriver.Remote(
command_executor='http://selenium-standalone:4444/wd/hub',
options=chrome_options)
</code>
<code> chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("privileged") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--disable-software-rasterizer") chrome_options.add_argument("--window-size=1920,1080") driver = webdriver.Remote( command_executor='http://selenium-standalone:4444/wd/hub', options=chrome_options) </code>

    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("privileged")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--disable-software-rasterizer")  
    chrome_options.add_argument("--window-size=1920,1080")
    
    driver = webdriver.Remote(
            command_executor='http://selenium-standalone:4444/wd/hub',
            options=chrome_options)

flask config:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
</code>
<code> if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True) </code>

    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=5000, debug=True)

If it helps, this is the message the console shows after the docker compose up :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>
⠿ Network deploy_argy_my-network Created 0.2s
⠿ Container deploy_argy-selenium-standalone-1 Created 0.1s
⠿ Container deploy_argy-flask-app-1 Created 0.1s
Attaching to deploy_argy-flask-app-1, deploy_argy-selenium-standalone-1
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,973 INFO Included extra file "/etc/supervisor/conf.d/chrome-cleanup.conf" during parsing
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,973 INFO Included extra file "/etc/supervisor/conf.d/selenium.conf" during parsing
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,984 INFO RPC interface 'supervisor' initialized
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,985 CRIT Server 'unix_http_server' running without any HTTP authentication checking
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,987 INFO supervisord started with pid 8
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:56,994 INFO spawned: 'xvfb' with pid 9
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,006 INFO spawned: 'vnc' with pid 10
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,029 INFO spawned: 'novnc' with pid 11
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,046 INFO spawned: 'selenium-standalone' with pid 13
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,096 INFO success: xvfb entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,099 INFO success: vnc entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,100 INFO success: novnc entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,101 INFO success: selenium-standalone entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
deploy_argy-selenium-standalone-1 | Appending Selenium options: --heartbeat-period 30
deploy_argy-selenium-standalone-1 | Appending Selenium options: --reject-unsupported-caps false
deploy_argy-selenium-standalone-1 | Setting up SE_NODE_GRID_URL...
deploy_argy-selenium-standalone-1 | Selenium Grid Standalone configuration:
deploy_argy-selenium-standalone-1 | [network]
deploy_argy-selenium-standalone-1 | relax-checks = true
deploy_argy-selenium-standalone-1 |
deploy_argy-selenium-standalone-1 | [node]
deploy_argy-selenium-standalone-1 | session-timeout = "300"
deploy_argy-selenium-standalone-1 | override-max-sessions = false
deploy_argy-selenium-standalone-1 | detect-drivers = false
deploy_argy-selenium-standalone-1 | drain-after-session-count = 0
deploy_argy-selenium-standalone-1 | max-sessions = 1
deploy_argy-selenium-standalone-1 |
deploy_argy-selenium-standalone-1 | [[node.driver-configuration]]
deploy_argy-selenium-standalone-1 | display-name = "chrome"
deploy_argy-selenium-standalone-1 | stereotype = '{"browserName": "chrome", "browserVersion": "125.0", "platformName": "Linux", "goog:chromeOptions": {"binary": "/usr/bin/google-chrome"}}'
deploy_argy-selenium-standalone-1 | max-sessions = 1
deploy_argy-selenium-standalone-1 |
deploy_argy-selenium-standalone-1 | Starting Selenium Grid Standalone...
deploy_argy-selenium-standalone-1 | Tracing is disabled
deploy_argy-flask-app-1 | * Serving Flask app 'argy'
deploy_argy-flask-app-1 | * Debug mode: on
deploy_argy-flask-app-1 | INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
deploy_argy-flask-app-1 | * Running on all addresses (0.0.0.0)
deploy_argy-flask-app-1 | * Running on http://127.0.0.1:5000
deploy_argy-flask-app-1 | * Running on http://172.29.0.3:5000
deploy_argy-flask-app-1 | INFO:werkzeug:Press CTRL+C to quit
deploy_argy-flask-app-1 | INFO:werkzeug: * Restarting with stat
deploy_argy-selenium-standalone-1 | 15:31:01.681 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
deploy_argy-selenium-standalone-1 | 15:31:01.747 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
deploy_argy-flask-app-1 | WARNING:werkzeug: * Debugger is active!
deploy_argy-flask-app-1 | INFO:werkzeug: * Debugger PIN: 217-542-865
deploy_argy-selenium-standalone-1 | 15:31:04.335 INFO [NodeOptions.getSessionFactories] - Detected 1 available processors
deploy_argy-selenium-standalone-1 | 15:31:04.470 INFO [NodeOptions.report] - Adding chrome for {"browserName": "chrome","browserVersion": "125.0","goog:chromeOptions": {"binary": "u002fusru002fbinu002fgoogle-chrome"},"platformName": "linux","se:noVncPort": 7900,"se:vncEnabled": true} 1 times
deploy_argy-selenium-standalone-1 | 15:31:04.539 INFO [Node.<init>] - Binding additional locator mechanisms: relative
deploy_argy-selenium-standalone-1 | 15:31:04.587 INFO [GridModel.setAvailability] - Switching Node 4bf6fab8-bd65-4d37-be9d-68ba288a0c5b (uri: http://172.29.0.2:4444) from DOWN to UP
deploy_argy-selenium-standalone-1 | 15:31:04.588 INFO [LocalDistributor.add] - Added node 4bf6fab8-bd65-4d37-be9d-68ba288a0c5b at http://172.29.0.2:4444. Health check every 120s
deploy_argy-selenium-standalone-1 | 15:31:04.889 INFO [Standalone.execute] - Started Selenium Standalone 4.21.0 (revision 79ed462ef4): http://172.29.0.2:4444
</code>
<code> ⠿ Network deploy_argy_my-network Created 0.2s ⠿ Container deploy_argy-selenium-standalone-1 Created 0.1s ⠿ Container deploy_argy-flask-app-1 Created 0.1s Attaching to deploy_argy-flask-app-1, deploy_argy-selenium-standalone-1 deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,973 INFO Included extra file "/etc/supervisor/conf.d/chrome-cleanup.conf" during parsing deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,973 INFO Included extra file "/etc/supervisor/conf.d/selenium.conf" during parsing deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,984 INFO RPC interface 'supervisor' initialized deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,985 CRIT Server 'unix_http_server' running without any HTTP authentication checking deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:55,987 INFO supervisord started with pid 8 deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:56,994 INFO spawned: 'xvfb' with pid 9 deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,006 INFO spawned: 'vnc' with pid 10 deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,029 INFO spawned: 'novnc' with pid 11 deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,046 INFO spawned: 'selenium-standalone' with pid 13 deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,096 INFO success: xvfb entered RUNNING state, process has stayed up for > than 0 seconds (startsecs) deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,099 INFO success: vnc entered RUNNING state, process has stayed up for > than 0 seconds (startsecs) deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,100 INFO success: novnc entered RUNNING state, process has stayed up for > than 0 seconds (startsecs) deploy_argy-selenium-standalone-1 | 2024-05-28 15:30:57,101 INFO success: selenium-standalone entered RUNNING state, process has stayed up for > than 0 seconds (startsecs) deploy_argy-selenium-standalone-1 | Appending Selenium options: --heartbeat-period 30 deploy_argy-selenium-standalone-1 | Appending Selenium options: --reject-unsupported-caps false deploy_argy-selenium-standalone-1 | Setting up SE_NODE_GRID_URL... deploy_argy-selenium-standalone-1 | Selenium Grid Standalone configuration: deploy_argy-selenium-standalone-1 | [network] deploy_argy-selenium-standalone-1 | relax-checks = true deploy_argy-selenium-standalone-1 | deploy_argy-selenium-standalone-1 | [node] deploy_argy-selenium-standalone-1 | session-timeout = "300" deploy_argy-selenium-standalone-1 | override-max-sessions = false deploy_argy-selenium-standalone-1 | detect-drivers = false deploy_argy-selenium-standalone-1 | drain-after-session-count = 0 deploy_argy-selenium-standalone-1 | max-sessions = 1 deploy_argy-selenium-standalone-1 | deploy_argy-selenium-standalone-1 | [[node.driver-configuration]] deploy_argy-selenium-standalone-1 | display-name = "chrome" deploy_argy-selenium-standalone-1 | stereotype = '{"browserName": "chrome", "browserVersion": "125.0", "platformName": "Linux", "goog:chromeOptions": {"binary": "/usr/bin/google-chrome"}}' deploy_argy-selenium-standalone-1 | max-sessions = 1 deploy_argy-selenium-standalone-1 | deploy_argy-selenium-standalone-1 | Starting Selenium Grid Standalone... deploy_argy-selenium-standalone-1 | Tracing is disabled deploy_argy-flask-app-1 | * Serving Flask app 'argy' deploy_argy-flask-app-1 | * Debug mode: on deploy_argy-flask-app-1 | INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. deploy_argy-flask-app-1 | * Running on all addresses (0.0.0.0) deploy_argy-flask-app-1 | * Running on http://127.0.0.1:5000 deploy_argy-flask-app-1 | * Running on http://172.29.0.3:5000 deploy_argy-flask-app-1 | INFO:werkzeug:Press CTRL+C to quit deploy_argy-flask-app-1 | INFO:werkzeug: * Restarting with stat deploy_argy-selenium-standalone-1 | 15:31:01.681 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding deploy_argy-selenium-standalone-1 | 15:31:01.747 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing deploy_argy-flask-app-1 | WARNING:werkzeug: * Debugger is active! deploy_argy-flask-app-1 | INFO:werkzeug: * Debugger PIN: 217-542-865 deploy_argy-selenium-standalone-1 | 15:31:04.335 INFO [NodeOptions.getSessionFactories] - Detected 1 available processors deploy_argy-selenium-standalone-1 | 15:31:04.470 INFO [NodeOptions.report] - Adding chrome for {"browserName": "chrome","browserVersion": "125.0","goog:chromeOptions": {"binary": "u002fusru002fbinu002fgoogle-chrome"},"platformName": "linux","se:noVncPort": 7900,"se:vncEnabled": true} 1 times deploy_argy-selenium-standalone-1 | 15:31:04.539 INFO [Node.<init>] - Binding additional locator mechanisms: relative deploy_argy-selenium-standalone-1 | 15:31:04.587 INFO [GridModel.setAvailability] - Switching Node 4bf6fab8-bd65-4d37-be9d-68ba288a0c5b (uri: http://172.29.0.2:4444) from DOWN to UP deploy_argy-selenium-standalone-1 | 15:31:04.588 INFO [LocalDistributor.add] - Added node 4bf6fab8-bd65-4d37-be9d-68ba288a0c5b at http://172.29.0.2:4444. Health check every 120s deploy_argy-selenium-standalone-1 | 15:31:04.889 INFO [Standalone.execute] - Started Selenium Standalone 4.21.0 (revision 79ed462ef4): http://172.29.0.2:4444 </code>

     ⠿ Network deploy_argy_my-network               Created                                                                                                                     0.2s
     ⠿ Container deploy_argy-selenium-standalone-1  Created                                                                                                                     0.1s
     ⠿ Container deploy_argy-flask-app-1            Created                                                                                                                     0.1s
    Attaching to deploy_argy-flask-app-1, deploy_argy-selenium-standalone-1
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:55,973 INFO Included extra file "/etc/supervisor/conf.d/chrome-cleanup.conf" during parsing
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:55,973 INFO Included extra file "/etc/supervisor/conf.d/selenium.conf" during parsing
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:55,984 INFO RPC interface 'supervisor' initialized
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:55,985 CRIT Server 'unix_http_server' running without any HTTP authentication checking
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:55,987 INFO supervisord started with pid 8
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:56,994 INFO spawned: 'xvfb' with pid 9
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,006 INFO spawned: 'vnc' with pid 10
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,029 INFO spawned: 'novnc' with pid 11
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,046 INFO spawned: 'selenium-standalone' with pid 13
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,096 INFO success: xvfb entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,099 INFO success: vnc entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,100 INFO success: novnc entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
    deploy_argy-selenium-standalone-1  | 2024-05-28 15:30:57,101 INFO success: selenium-standalone entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
    deploy_argy-selenium-standalone-1  | Appending Selenium options: --heartbeat-period 30
    deploy_argy-selenium-standalone-1  | Appending Selenium options: --reject-unsupported-caps false
    deploy_argy-selenium-standalone-1  | Setting up SE_NODE_GRID_URL...
    deploy_argy-selenium-standalone-1  | Selenium Grid Standalone configuration:
    deploy_argy-selenium-standalone-1  | [network]
    deploy_argy-selenium-standalone-1  | relax-checks = true
    deploy_argy-selenium-standalone-1  |
    deploy_argy-selenium-standalone-1  | [node]
    deploy_argy-selenium-standalone-1  | session-timeout = "300"
    deploy_argy-selenium-standalone-1  | override-max-sessions = false
    deploy_argy-selenium-standalone-1  | detect-drivers = false
    deploy_argy-selenium-standalone-1  | drain-after-session-count = 0
    deploy_argy-selenium-standalone-1  | max-sessions = 1
    deploy_argy-selenium-standalone-1  |
    deploy_argy-selenium-standalone-1  | [[node.driver-configuration]]
    deploy_argy-selenium-standalone-1  | display-name = "chrome"
    deploy_argy-selenium-standalone-1  | stereotype = '{"browserName": "chrome", "browserVersion": "125.0", "platformName": "Linux", "goog:chromeOptions": {"binary": "/usr/bin/google-chrome"}}'
    deploy_argy-selenium-standalone-1  | max-sessions = 1
    deploy_argy-selenium-standalone-1  |
    deploy_argy-selenium-standalone-1  | Starting Selenium Grid Standalone...
    deploy_argy-selenium-standalone-1  | Tracing is disabled
    deploy_argy-flask-app-1            |  * Serving Flask app 'argy'
    deploy_argy-flask-app-1            |  * Debug mode: on
    deploy_argy-flask-app-1            | INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
    deploy_argy-flask-app-1            |  * Running on all addresses (0.0.0.0)
    deploy_argy-flask-app-1            |  * Running on http://127.0.0.1:5000
    deploy_argy-flask-app-1            |  * Running on http://172.29.0.3:5000
    deploy_argy-flask-app-1            | INFO:werkzeug:Press CTRL+C to quit
    deploy_argy-flask-app-1            | INFO:werkzeug: * Restarting with stat
    deploy_argy-selenium-standalone-1  | 15:31:01.681 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
    deploy_argy-selenium-standalone-1  | 15:31:01.747 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
    deploy_argy-flask-app-1            | WARNING:werkzeug: * Debugger is active!
    deploy_argy-flask-app-1            | INFO:werkzeug: * Debugger PIN: 217-542-865
    deploy_argy-selenium-standalone-1  | 15:31:04.335 INFO [NodeOptions.getSessionFactories] - Detected 1 available processors
    deploy_argy-selenium-standalone-1  | 15:31:04.470 INFO [NodeOptions.report] - Adding chrome for {"browserName": "chrome","browserVersion": "125.0","goog:chromeOptions": {"binary": "u002fusru002fbinu002fgoogle-chrome"},"platformName": "linux","se:noVncPort": 7900,"se:vncEnabled": true} 1 times
    deploy_argy-selenium-standalone-1  | 15:31:04.539 INFO [Node.<init>] - Binding additional locator mechanisms: relative
    deploy_argy-selenium-standalone-1  | 15:31:04.587 INFO [GridModel.setAvailability] - Switching Node 4bf6fab8-bd65-4d37-be9d-68ba288a0c5b (uri: http://172.29.0.2:4444) from DOWN to UP
    deploy_argy-selenium-standalone-1  | 15:31:04.588 INFO [LocalDistributor.add] - Added node 4bf6fab8-bd65-4d37-be9d-68ba288a0c5b at http://172.29.0.2:4444. Health check every 120s
    deploy_argy-selenium-standalone-1  | 15:31:04.889 INFO [Standalone.execute] - Started Selenium Standalone 4.21.0 (revision 79ed462ef4): http://172.29.0.2:4444

I’ve tried changing the url in command_executor='http://selenium-standalone:4444/wd/hub' but nothing worked so far. Thanks

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật