Docker
psycopg2.OperationalError:無法連接到伺服器:沒有到主機的路由伺服器是否在主機“db”上執行並接受埠上的 TCP/IP 連接
在使用 Docker 版本 20.10.6-ce,建構 8728dd246c3a 的 openSUSE Tumbleweed 上,按照此處的說明操作即可
https://github.com/mirumee/saleor-platform#how-to-run-it
但是在帶有 Docker 版本 19.03.15 的 openSUSE Leap 15.3 上,建構 99e3ed89195c
migrate
命令(最後一個命令)會引發錯誤:$ git clone https://github.com/mirumee/saleor-platform.git --recursive --jobs 3 $ cd saleor-platform $ docker-compose build $ docker-compose run --rm api python3 manage.py migrate
錯誤
psycopg2.OperationalError:無法連接到伺服器:沒有到主機的路由伺服器是否在主機“db”(172.21.0.4)上執行並接受埠 5432 上的 TCP/IP 連接?
錯誤日誌
m3@localhost:~/repos/saleor-platform> docker-compose run --rm api python3 manage.py migrate Creating network "saleor-platform_default" with the default driver Creating network "saleor-platform_saleor-backend-tier" with driver "bridge" Creating saleor-platform_jaeger_1 ... done Creating saleor-platform_db_1 ... done Creating saleor-platform_redis_1 ... done Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 200, in connect self.connection = self.get_new_connection(conn_params) File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/backends/postgresql/base.py", line 187, in get_new_connection connection = Database.connect(**conn_params) File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2.OperationalError: could not connect to server: No route to host Is the server running on host "db" (172.21.0.4) and accepting TCP/IP connections on port 5432? The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 330, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 371, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 85, in wrapped res = handle_func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 92, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "/usr/local/lib/python3.8/site-packages/django/db/migrations/executor.py", line 18, in __init__ self.loader = MigrationLoader(self.connection) File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 53, in __init__ self.build_graph() File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 216, in build_graph self.applied_migrations = recorder.applied_migrations() File "/usr/local/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 77, in applied_migrations if self.has_table(): File "/usr/local/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 55, in has_table with self.connection.cursor() as cursor: File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 259, in cursor return self._cursor() File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 235, in _cursor self.ensure_connection() File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/usr/local/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection self.connect() File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 200, in connect self.connection = self.get_new_connection(conn_params) File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/backends/postgresql/base.py", line 187, in get_new_connection connection = Database.connect(**conn_params) File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) django.db.utils.OperationalError: could not connect to server: No route to host Is the server running on host "db" (172.21.0.4) and accepting TCP/IP connections on port 5432? m3@localhost:~/repos/saleor-platform>
試過了
可能是由於作業系統設置。我通過防火牆將 PostgreSQL 埠添加
5432
到公共埠,但仍然收到錯誤。試過了
沒用:
- 重啟 Docker 服務
- 重新啟動機器
試過了
以下命令沒有幫助:
https://stackoverflow.com/a/57502873/3405291
通過以下方式獲取
Subnet
(172.19.0.0/16
):docker network ls docker inspect ${NETWORK_NAME}
然後:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.19.0.0/16 accept' sudo firewall-cmd --reload sudo systemctl restart docker.service
試過了
這種方法不起作用,即將它添加到
docker-compose.yml
文件內的數據庫服務中:environment: - POSTGRES_HOST_AUTH_METHOD=trust
在 openSUSE Leap 15.3 上更新到 Docker 20 解決了以下錯誤:
m3@dhcppc3:~> docker -v Docker version 20.10.6-ce, build 8728dd246c3a