繁体   English   中英

获取错误:django python for docker 中的未知 MySQL 服务器主机“db”(-2)

[英]Getting error : Unknown MySQL server host 'db' (-2) in django python for docker

我是 docker 的新手,我正在研究 django python。 当我尝试运行此命令时:

docker-compose run app sh -c "python app/manage.py migrate" 

我收到错误Unknown MySQL server host 'db' (-2) ,任何人都可以帮我解决这个问题吗? 在这里,我添加了整个 dockerfile 和 db 连接:

文件

FROM python:3.7
ENV PYTHONUNBUFFERED 1

RUN apt-get update && apt-get install -y --no-install-recommends \
        python-dev \
        default-libmysqlclient-dev \
        && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

COPY requirements.txt /requirements.txt
RUN pip install -r /requirements.txt

RUN mkdir /app
COPY ./ /app

docker-compose.yml

version: "3"
services:

  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./:/app
    command: >
      sh -c "python app/manage.py runserver 0.0.0.0:8000"

# Services
  db:
    image: mysql:5.7
    #restart: no
    environment:
      # Password for root access
       MYSQL_ROOT_PASSWORD: '12345678'
       MYSQL_DATABASE: 'trail_risk_inc_backend'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
      # Where our data will be persisted
    volumes:
      - ./db-init:/docker-entrypoint-initdb.d

设置.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'trail_risk_inc_backend',
        'USER': 'root',
        'PASSWORD': '12345678',
        'HOST': 'db',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

问题出在您的命令上:

docker-compose run app sh -c "python app/manage.py migrate" 

这将只启动应用程序容器而不是数据库。

尝试以以下方式开始您的堆栈:

docker-compose up -d 

然后运行你的命令:

docker exec -ti MY_APP_CON sh -c "python app/manage.py migrate"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM