Giter Site home page Giter Site logo

gmt2001 / ouroboros Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pyouroboros/ouroboros

28.0 28.0 5.0 921 KB

Automatically update running docker containers with newest available image

License: MIT License

Dockerfile 1.08% Python 98.92%
hacktoberfest

ouroboros's People

Contributors

circa10a avatar dannysauer avatar dependabot[bot] avatar dirtycajunrice avatar felix-engelmann avatar gkovelman-levl avatar gmt2001 avatar koreno avatar larsderidder avatar mathcantin avatar mauvehed avatar mdleal avatar nemchik avatar nightvisi0n avatar strayer avatar taixmiguel avatar the-lazy-fox avatar tlkamp avatar torpus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ouroboros's Issues

Add Hooks for Services

Add hooks for Service mode

  • service_dry_run_update
  • service_notify_update
  • service_before_update
  • service_after_update

Add Alternating Update Strategy Label

Add the ability to update a particular container using the alternating names strategy, just like the way the Ouroboros self-update works. Activate using a label tag.

Bad Request ("conflicting options: port exposing and the container type network mode")

Similar error to #63, recently switched over to qBittorrent.

2023-03-19 23:11:17 : INFO : dockerclient : qbittorrent will be updated
2023-03-19 23:11:31 : ERROR : base : Job "Interval container update for unix://var/run/docker.sock (trigger: interval[1:00:00], next run at: 2023-03-20 00:10:11 CDT)" raised an exception
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/docker/api/client.py", line 268, in _raise_for_status
    response.raise_for_status()
  File "/usr/local/lib/python3.11/site-packages/requests/models.py", line 1021, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http+docker://localhost/v1.41/containers/create?name=qbittorrent

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/apscheduler/executors/base.py", line 125, in run_job
    retval = job.func(*job.args, **job.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pyouroboros/dockerclient.py", line 369, in update
    new_container = self.recreate(container, latest_image)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pyouroboros/dockerclient.py", line 139, in recreate
    created = self.client.api.create_container(**new_config)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/api/container.py", line 431, in create_container
    return self.create_container_from_config(config, name, platform)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/api/container.py", line 448, in create_container_from_config
    return self._result(res, True)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/api/client.py", line 274, in _result
    self._raise_for_status(response)
  File "/usr/local/lib/python3.11/site-packages/docker/api/client.py", line 270, in _raise_for_status
    raise create_api_error_from_http_exception(e) from e
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/docker/errors.py", line 39, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation) from e
docker.errors.APIError: 400 Client Error for http+docker://localhost/v1.41/containers/create?name=qbittorrent: Bad Request ("conflicting options: port exposing and the container type network mode")

Docker compose file:

  qbittorrent:
    container_name: qbittorrent
    image: lscr.io/linuxserver/qbittorrent:latest
    restart: unless-stopped
    network_mode: service:openvpn # run on the vpn network    
    environment:
      - PUID=1062
      - PGID=${PGID}
      - TZ=${TZ}
      - WEBUI_PORT=8090
    volumes:
      - ${CONFIG}/qbittorrent:/config
      - ${ROOT}/downloads:/downloads
    depends_on:
      openvpn:
        condition: service_healthy
    logging:
      driver: gelf
      options:
        gelf-address: "tcp://nas01.lan:12201"

Thanks!

Issue detecting image tag for all containers

Hello,

I get this type of errors in the log:

2023-12-14 10:32:34 : ERROR : dockerclient : Issue detecting portainer's image tag. Skipping...

It does that seemingly for all my containers, even for itself.

I had previously pyouroboros/ouroboros, it was working fine but since it's not maintained at all anymore, I thought of switching before it finally breaks.

I must have done some very basic mistake somewhere, but I cannot figure it out.

Docker Compose:

version: '3'
services:
  ouroboros:
    container_name: ouroboros
    hostname: ouroboros
    image: ghcr.io/gmt2001/ouroboros
    environment:
      - CLEANUP=true
      - INTERVAL=300
      - LOG_LEVEL=info
      - SELF_UPDATE=true
      - IGNORE=nextcloud-aio-mastercontainer nextcloud-aio-notify-push nextcloud-aio-apache nextcloud-aio-nextcloud nextcloud-aio-imaginary nextcloud-aio-docker-socket-proxy nextcloud-aio-fulltextsearch nextcloud-aio-clamav nextcloud-aio-redis nextcloud-aio-database
      - TZ=Europe/Amsterdam
      - LANGUAGE=en
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /volume1/docker/ouroboros/hooks:/app/pyouroboros/hooks # https://github.com/gmt2001/ouroboros/wiki/Hooks

Docker 20.10.23
DSM 7.2

Bad Request ("conflicting options: hostname and the network mode")

2023-02-28 21:35:35 : ERROR : base : Job "Interval container update for unix://var/run/docker.sock (trigger: interval[1:00:00], next run at: 2023-02-28 22:34:12 CST)" raised an exception
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/docker/api/client.py", line 268, in _raise_for_status
    response.raise_for_status()
  File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 960, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http+docker://localhost/v1.41/containers/create?name=deluge
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/apscheduler/executors/base.py", line 125, in run_job
    retval = job.func(*job.args, **job.kwargs)
  File "/usr/local/lib/python3.10/site-packages/pyouroboros/dockerclient.py", line 369, in update
    new_container = self.recreate(container, latest_image)
  File "/usr/local/lib/python3.10/site-packages/pyouroboros/dockerclient.py", line 139, in recreate
    created = self.client.api.create_container(**new_config)
  File "/usr/local/lib/python3.10/site-packages/docker/api/container.py", line 428, in create_container
    return self.create_container_from_config(config, name)
  File "/usr/local/lib/python3.10/site-packages/docker/api/container.py", line 439, in create_container_from_config
    return self._result(res, True)
  File "/usr/local/lib/python3.10/site-packages/docker/api/client.py", line 274, in _result
    self._raise_for_status(response)
  File "/usr/local/lib/python3.10/site-packages/docker/api/client.py", line 270, in _raise_for_status
    raise create_api_error_from_http_exception(e)
  File "/usr/local/lib/python3.10/site-packages/docker/errors.py", line 31, in create_api_error_from_http_exception
    raise cls(e, response=response, explanation=explanation)
docker.errors.APIError: 400 Client Error for http+docker://localhost/v1.41/containers/create?name=deluge: Bad Request ("conflicting options: hostname and the network mode")

I'm not setting the hostname Docker compose file:

  deluge:
    container_name: deluge
    image: linuxserver/deluge:latest
    restart: unless-stopped
    network_mode: service:vpn # run on the vpn network
    environment:
      - PUID=1026
      - PGID=100
      - TZ=America/Chicago
    volumes:
      - /volume1/downloads:/downloads
      - /volume1/config/deluge:/config
    depends_on:
      - vpn
    logging:
      driver: gelf
      options:
        gelf-address: "tcp://nas01.lan:12201"

Seems to be related to similar Watchtower issue:
containrrr/watchtower#188
containrrr/watchtower@fde6e73

'Connection aborted.', ConnectionRefusedError(111, 'Connection refused')

2022-01-13 16:29:59 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:29:59 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen      
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:01 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:01 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:04 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:04 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:06 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:06 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:08 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:08 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:10 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:10 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:15 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:15 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))
2022-01-13 16:30:22 : INFO : ouroboros : Version: 1.9.0-main
2022-01-13 16:30:22 : ERROR : notifiers : Can't find the 'en' language
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1325, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1274, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1034, in _send_output
    self.send(msg)
  File "/usr/local/lib/python3.9/http/client.py", line 974, in send
    self.connect()
  File "/usr/local/lib/python3.9/site-packages/docker/transport/unixconn.py", line 30, in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.9/site-packages/docker/api/daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "/usr/local/lib/python3.9/site-packages/docker/utils/decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/ouroboros", line 5, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/ouroboros.py", line 181, in main
    docker = Docker(socket, config, data_manager, notification_manager)
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 14, in __init__
    self.client = self.connect()
  File "/usr/local/lib/python3.9/site-packages/pyouroboros/dockerclient.py", line 53, in connect
    client = DockerClient(base_url=self.socket, timeout=self.config.docker_timeout)
  File "/usr/local/lib/python3.9/site-packages/docker/client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.9/site-packages/docker/api/client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionRefusedError(111, 'Connection refused'))

Handle Dependencies Properly

Handle dependencies recursively, based on the container hierarchy, instead of all-at-once

  1. Gather updateable containers list
  2. foreach updateable: Recursively determine dependencies and dependents
  3. Re-arrange updateable List as a dependency tree
  4. foreach in dependency tree: Stop everything in proper order, update everything that needs to be updated, start everything in proper order

Dependency tree example:

|-MongoDB
  |-Web-Backend
    |-Web-Frontend
  |-API
|-Standalone App

Order of operations for example (pseudocode):

if Web-Frontend or Web-Frontend.dependencies-recursive has update:
   Stop Web-Frontend
   Update? Web-Frontend

if Web-Backend or Web-Backend.dependencies-recursive has update:
   Stop Web-Backend
   Update? Web-Backend

if API or API.dependencies-recursive has update:
   Stop API
   Update? API

if MongoDB or MongoDB.dependencies-recursive has update:
   Stop MongoDB
   Update? MongoDB

if MongoDB stopped:
  Start MongoDB

if API stopped:
  Start API

if Web-Backend stopped:
  Start Web-Backend

if Web-Frontend stopped:
  Start Web-Frontend

if Standalone App or Standalone App.dependencies-recursive has update:
  Stop Standalone App
  Update? Standalone App

if Standalone App stopped:
  Start Standalone App

ERROR : notifiers : Can't find the 'en' language`

Hi,

Nothing really important, but dislike having error in logs ^^

Seem to have a problem with the language option.

here is my docker compose :

version: '3'
services:
  ouroboros:
    container_name: ouroboros
    hostname: ouroboros
    image: ghcr.io/gmt2001/ouroboros:latest
    environment:
      - PUID=1012
      - PGID=1014
      - LANGUAGE=en
      - CLEANUP=true
      - CRON="55 5 * * */1"
      - LOG_LEVEL=info
      - SELF_UPDATE=true
      - TZ=Europe/Paris
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: "-N tgram://xxx/1xxxx"

and in the log :

23/03/2023 12:11:37
2023-03-23 12:11:37 : INFO : ouroboros : Version: 1.11.1-main
23/03/2023 12:11:37
2023-03-23 12:11:37 : INFO : config : Cron configuration is valid. Using Cron schedule ['55', '5', '*', '*', '*/1']
23/03/2023 12:11:37
2023-03-23 12:11:37 : ERROR : notifiers : Can't find the 'en' language

thanks !

SyntaxError: invalid syntax. Perhaps you forgot a comma?

ouroboros    | SyntaxError: invalid syntax. Perhaps you forgot a comma?

ouroboros    | Traceback (most recent call last):

ouroboros    |   File "/usr/local/bin/ouroboros", line 2, in <module>

ouroboros    |     from pyouroboros.ouroboros import main

ouroboros    |   File "/usr/local/lib/python3.10/site-packages/pyouroboros/ouroboros.py", line 105

ouroboros    |     docker_group.add_argument('-L', '--latest-only', default=Config.latest_only dest='LATEST_ONLY', action='store_true',

ouroboros fails to upgrade my homeassistant container at least on a really slow IO box

ouroboros fails to upgrade my homeassistant container on a really slow IO box (ie very busy one, the initial dovecot FTS indexing proceeds for months).

I missed the time to try tweaking the code (I switched to watchtower today but still have to see on new homeassistant image update if it also timeout on this box). But could be that it is simply a matter of making the timeout an environment variable that I could tweak (it seems it defaults to 60 seconds).

At least this bug report might service as a clue to another user with the same error.

The homeassistant image is 1.8GB.

gmt2001/ouroboros:latest
from 2023-03-24 23:04:42
sha256:d563375caa178b8e1106b268e26934e5bb9c0d13456d973617e47d7a1666c364

I get this error:

2023-08-15 21:45:32 : INFO : dockerclient : homeassistant will be updated
15/08/2023 21:45:32
2023-08-15 21:45:32 : DEBUG : dockerclient : Stopping container: homeassistant
15/08/2023 21:45:55
2023-08-15 21:45:55 : DEBUG : connectionpool : http://localhost:None "POST /v1.41/containers/d86318fd7f92cf69084b2a69503f801b76cff328b7563deb9d6ad8e1bd5c99f7/stop HTTP/1.1" 204 0
15/08/2023 21:45:55
2023-08-15 21:45:55 : DEBUG : dockerclient : Removing container: homeassistant
15/08/2023 21:46:57
2023-08-15 21:46:56 : ERROR : base : Job "Initial run interval container update for unix://var/run/docker.sock (trigger: date[2023-08-15 21:33:53 CEST], next run at: 2023-08-15 21:33:53 CEST)" raised an exception
15/08/2023 21:46:57
Traceback (most recent call last):
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/connectionpool.py", line 449, in _make_request
15/08/2023 21:46:57
    six.raise_from(e, None)
15/08/2023 21:46:57
  File "<string>", line 3, in raise_from
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/connectionpool.py", line 444, in _make_request
15/08/2023 21:46:57
    httplib_response = conn.getresponse()
15/08/2023 21:46:57
                       ^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/http/client.py", line 1374, in getresponse
15/08/2023 21:46:57
    response.begin()
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/http/client.py", line 318, in begin
15/08/2023 21:46:57
    version, status, reason = self._read_status()
15/08/2023 21:46:57
                              ^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/http/client.py", line 279, in _read_status
15/08/2023 21:46:57
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
15/08/2023 21:46:57
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/socket.py", line 706, in readinto
15/08/2023 21:46:57
    return self._sock.recv_into(b)
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
TimeoutError: timed out
15/08/2023 21:46:57
15/08/2023 21:46:57
During handling of the above exception, another exception occurred:
15/08/2023 21:46:57
15/08/2023 21:46:57
Traceback (most recent call last):
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/requests/adapters.py", line 489, in send
15/08/2023 21:46:57
    resp = conn.urlopen(
15/08/2023 21:46:57
           ^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/connectionpool.py", line 787, in urlopen
15/08/2023 21:46:57
    retries = retries.increment(
15/08/2023 21:46:57
              ^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/util/retry.py", line 550, in increment
15/08/2023 21:46:57
    raise six.reraise(type(error), error, _stacktrace)
15/08/2023 21:46:57
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/packages/six.py", line 770, in reraise
15/08/2023 21:46:57
    raise value
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/connectionpool.py", line 703, in urlopen
15/08/2023 21:46:57
    httplib_response = self._make_request(
15/08/2023 21:46:57
                       ^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/connectionpool.py", line 451, in _make_request
15/08/2023 21:46:57
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/urllib3/connectionpool.py", line 340, in _raise_timeout
15/08/2023 21:46:57
    raise ReadTimeoutError(
15/08/2023 21:46:57
urllib3.exceptions.ReadTimeoutError: UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
15/08/2023 21:46:57
15/08/2023 21:46:57
During handling of the above exception, another exception occurred:
15/08/2023 21:46:57
15/08/2023 21:46:57
Traceback (most recent call last):
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/apscheduler/executors/base.py", line 125, in run_job
15/08/2023 21:46:57
    retval = job.func(*job.args, **job.kwargs)
15/08/2023 21:46:57
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/pyouroboros/dockerclient.py", line 369, in update
15/08/2023 21:46:57
    new_container = self.recreate(container, latest_image)
15/08/2023 21:46:57
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/pyouroboros/dockerclient.py", line 137, in recreate
15/08/2023 21:46:57
    self.remove(container)
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/pyouroboros/dockerclient.py", line 128, in remove
15/08/2023 21:46:57
    container.remove()
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/docker/models/containers.py", line 352, in remove
15/08/2023 21:46:57
    return self.client.api.remove_container(self.id, **kwargs)
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/docker/utils/decorators.py", line 19, in wrapped
15/08/2023 21:46:57
    return f(self, resource_id, *args, **kwargs)
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/docker/api/container.py", line 1024, in remove_container
15/08/2023 21:46:57
    res = self._delete(
15/08/2023 21:46:57
          ^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/docker/utils/decorators.py", line 46, in inner
15/08/2023 21:46:57
    return f(self, *args, **kwargs)
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/docker/api/client.py", line 245, in _delete
15/08/2023 21:46:57
    return self.delete(url, **self._set_request_timeout(kwargs))
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/requests/sessions.py", line 669, in delete
15/08/2023 21:46:57
    return self.request("DELETE", url, **kwargs)
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/requests/sessions.py", line 587, in request
15/08/2023 21:46:57
    resp = self.send(prep, **send_kwargs)
15/08/2023 21:46:57
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/requests/sessions.py", line 701, in send
15/08/2023 21:46:57
    r = adapter.send(request, **kwargs)
15/08/2023 21:46:57
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
15/08/2023 21:46:57
  File "/usr/local/lib/python3.11/site-packages/requests/adapters.py", line 578, in send
15/08/2023 21:46:57
    raise ReadTimeout(e, request=request)
15/08/2023 21:46:57
requests.exceptions.ReadTimeout: UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
16/08/2023 21:33:54

the ouroborous portainer stack was:

version: '2'
services:
  ouroboros:
    container_name: ouroboros
    hostname: ouroboros
    image: gmt2001/ouroboros
    environment:
      - CLEANUP=true
      - INTERVAL=86400
      - LOG_LEVEL=debug
      - SELF_UPDATE=true
      - IGNORE=
      - TZ=Europe/Paris
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

the homeasstant on is:

version: '3.8'

services:
  homeassistant:
    image: homeassistant/home-assistant:latest
    container_name: homeassistant
    restart: unless-stopped
    environment:
      - PUID=1002 # Enter the UID of the user who should own the files here
      - PGID=100  # Enter the GID of the user who should own the files here
      - TZ=Europe/Paris # Enter your timezone
    volumes:
      - /srv/dev-disk-by-label-secure/appdata/docker/homeassistant:/config
      - /etc/pki/realms/prahal.homelinux.net:/etc/pki/realms/prahal.homelinux.net:ro
      - /etc/localtime:/etc/localtime:ro
    network_mode: "host"
    ports:
      - 8123:8123
    devices:
      - "/dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0:/dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0"
      - "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AB0KWPMU-if00-port0:/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AB0KWPMU-if00-port0"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.