【问题标题】:Getting error : Unknown MySQL server host 'db' (-2) in django python for docker出现错误:django python for docker中的未知MySQL服务器主机'db'(-2)
【发布时间】:2019-12-13 10:07:24
【问题描述】:

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

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

我收到错误Unknown MySQL server host 'db' (-2),谁能帮我解决这个问题?在这里,我添加了我的整个 dockerfile 和 db 连接:

Dockerfile

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

settings.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',
    }
}

【问题讨论】:

    标签: python django docker docker-compose dockerfile


    【解决方案1】:

    问题出在你的命令上:

    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"
    

    【讨论】:

    • 我们需要为 MY_APP_CON 添加什么?
    • 感谢它现在对我有用,迁移已完成,现在您能帮我吗,我可以将此连接与工作台连接吗?
    • 您需要编辑您的端口部分 "3306:3306" ,然后您可以使用 localhost 3306 设置您的工作台
    • ports: # : - '3306' 在这一行对吗?
    • 这里 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'trail_risk_inc_backend', 'USER': 'root', 'PASSWORD' : '12345678', 'HOST': 'db', # 或者你的数据库托管在 'PORT' 上的 IP 地址:'3306:3306', } } ?
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多