![](/img/trans.png)
[英]Django/Docker-compose: Retry Database Connection when: django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")
[英]django.db.utils.OperationalError: (2002, “Can't connect to MySQL server on 'db' (115)”)
這已經被問過了,但沒有一個答案對我有幫助。 這是我的配置。 我正在運行 docker-compose 和兩個服務,django 中的 web 應用程序和 mariadb 中的數據庫。 我可以使用這個確切的配置正常連接到我的本地數據庫,只需將 settings.py 中的主機更改為 localhost。 當我運行docker-compose up
,web 服務在嘗試連接到數據庫后立即停止,並返回此錯誤。
django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")
Dockerfile
FROM python:3.7
RUN mkdir /app
COPY requierments.txt /app/
WORKDIR /app
RUN pip install -r requierments.txt
COPY . /app/
docker-compose.yml
version: '3'
services:
db:
image: mariadb:10.2
expose:
- 3306
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: 'django_backend'
MYSQL_USER: 'django'
MYSQL_PORT: '3306'
MYSQL_PASSWORD: 'mysql1234pass'
MYSQL_ROOT_PASSWORD: 'password'
web:
build: .
image: backendblockchain_web
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- db
links:
- db
command:
- /bin/bash
- -c
- |
sleep 10
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000
設置.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_backend',
'USER': 'django',
'PASSWORD': 'mysql1234pass',
'HOST': 'db',
'PORT': '3306'
}
}
您的WEB
容器在數據庫啟動並運行之前啟動,您需要使用其中一種方法等待它,或者首先使用docker-compose up db
手動啟動數據庫
確保您的 db docker 映像運行良好。 檢查正在運行的 db 容器的日志。 我可以在我的 docker-compose 文件中成功使用 MariaDB:
db:
image: mariadb
ports:
- 3306:3306
environment:
MYSQL_USER: "****"
MYSQL_PASSWORD: "****"
MYSQL_DATABASE: "*****"
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.