![](/img/trans.png)
[英]OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
[英]Dockerize Django + mySql app: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)") error
我正在嘗試對使用 mySql 的 Django 應用程序進行 docker 化,但我遇到了一些問題。 這是我第一次使用 Docker,所以可能有一些我不明白的基本內容。
按照一些在線教程,這是我的 Dockerfile:
FROM python:3.8
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install --upgrade pip && pip install -r requirements.txt
RUN pip install mysqlclient
COPY . /code/
這是我的 docker-compose:
version: '3'
services:
db:
image: mysql:8
ports:
- '3306:3306'
environment:
MYSQL_DATABASE: 'database_name'
MYSQL_USER: 'django'
MYSQL_PASSWORD: 'django-password'
MYSQL_ROOT_PASSWORD: 'password'
volumes:
- .setup.sql:/docker-entrypoint-initbd.d/setup.sql
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
links:
- db
設置.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('MYSQL_DATABASE', 'mysql-db'),
'USER': os.environ.get('MYSQL_USER', 'mysql-user'),
'PASSWORD': os.environ.get('MYSQL_PASSWORD', 'mysql-password'),
'HOST': os.environ.get('MYSQL_DATABASE_HOST', 'db'),
'PORT': os.environ.get('MYSQL_DATABASE_PORT', 3306),
}
}
和.env:
MYSQL_DATABASE=database_name
MYSQL_USER=django
MYSQL_PASSWORD=django-password
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE_HOST=db
MYSQL_DATABASE_PORT=3306
為了對應用程序進行 docker 化,我在 Windows 10 中使用 Docker 桌面。
我運行后:
docker-compose up -d
我看到兩個容器(db 和 web)都在運行,但是在 web 容器中我看到 django 無法連接到 mySql,因為它給了我錯誤:
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)")
我似乎有一些類似的線索,但它們並沒有幫助我理解問題出在哪里,或者如何解決它。 請幫我解釋一下這個問題,謝謝!
您是否嘗試過先啟動您的數據庫容器?
docker compose up db
docker compose build web
docker compose up
構建服務后,您將能夠在不首先啟動 db 容器的情況下進行 docker docker compose up
因為容器將按照 docker-compose 文件中定義的depends_on
順序啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.