[英]Django can't connect to mysql via docker-compose
我有一個使用Django和MySQL的應用程序。 該應用程序未從Django應用程序連接到MySQL容器,但可以使用具有相同憑據的Sequel Pro進行訪問。
這是我的docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7.18
ports:
- "3307:3306"
volumes:
- "./mysql:/var/lib/mysql"
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=django
- MYSQL_USER=django
- MYSQL_PASSWORD=pass
web:
build:
context: .
depends_on:
- db
# links:
# - db
volumes:
- "./app:/src"
command: bash -c "sleep 3 && python3 src/manage.py runserver 8000"
ports:
- "8001:8000"
environment:
- DJANGO_SETTINGS_MODULE=app.production
- DB_NAME=django
- DB_USER=django
- DB_PASS=pass
- DB_HOST=db
- DB_PORT=3306
這是我的django settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.getenv('DB_NAME', 'django'),
'USER': os.getenv('DB_USER', 'django'),
'PASSWORD': os.getenv('DB_PASS', 'pass'),
'HOST': os.getenv('DB_HOST', 'db'),
'PORT': os.getenv('DB_PORT', '3306'),
'OPTIONS': {
'sql_mode': 'STRICT_TRANS_TABLES',
}
}
}
這是我不知道該如何解決的錯誤
web_1 | Performing system checks...
web_1 |
web_1 | Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7efeb8563950>
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.5/dist-
packages/django/db/backends/base/base.py", line 213, in ensure_connection
web_1 | self.connect()
web_1 | File "/usr/local/lib/python3.5/dist-
packages/django/db/backends/base/base.py", line 189, in connect
web_1 | self.connection = self.get_new_connection(conn_params)
web_1 | File "/usr/local/lib/python3.5/dist-
packages/django/db/backends/mysql/base.py", line 274, in get_new_connection
web_1 | conn = Database.connect(**conn_params)
web_1 | File "/usr/local/lib/python3.5/dist-
packages/MySQLdb/__init__.py", line 86, in Connect
web_1 | return Connection(*args, **kwargs)
web_1 | File "/usr/local/lib/python3.5/dist-packages/MySQLdb/connections.py", line 204, in __init__
web_1 | super(Connection, self).__init__(*args, **kwargs2)
web_1 | _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'db' (110)")
請指教我不知道我在做什么錯。
更新:我只是看到我的容器也無法將請求發送到sentry.io
Sentry responded with an error: <urlopen error [Errno -3] Temporary failure in name resolution> (url: https://sentry.io/api/210137/store/)
那么這是關於docker網絡? 我如何調查這個問題謝謝
嘗試將容器添加到同一網絡:
version: '2'
services:
db:
image: mysql:5.7.18
...
networks:
- base
web:
...
networks:
- base
networks:
base:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.