首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql连接器-没有连接的酒瓶应用程序中的python

mysql连接器-没有连接的酒瓶应用程序中的python
EN

Stack Overflow用户
提问于 2020-06-11 07:07:40
回答 1查看 752关注 0票数 0

在我的本地主机上没有问题,并且在我的pc上运行良好,但是在没有运行的对接中,并且这个错误

连通

代码语言:javascript
复制
def get_database_connection():
    """connects to the MySQL database and returns the connection"""
    return mysql.connector.connect(
        host=config.MYSQL_HOST,
        user=config.MYSQL_USERNAME,
        passwd=config.MYSQL_PASSWORD,
        db = config.MYSQL_DB_NAME,
        port=config.MYSQL_PORT,
        charset='utf8'
    )

config.py

代码语言:javascript
复制
MYSQL_HOST = "localhost"
MYSQL_USERNAME = "root" 
MYSQL_PASSWORD = ""
MYSQL_PORT = 3306
MYSQL_DB_NAME = "newsdb"

代码语言:javascript
复制
** Operational MODE: preforking ***
build Tables
error --- > 2003 (HY000): Can't connect to MySQL server on 'localhost' (99)
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x55e5696d31a0 pid: 10 (default app)
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 

项目结构

代码语言:javascript
复制
app
├── admin
│   ├── api.py
│   ├── config.py
│   ├── db.py
│   ├── __init__.py
│   ├── routes.py
│   ├── static
│   └── templates
├── config.py
├── db.py
├── error_handlers.py
├── __init__.py
├── robots
│   ├── robot_runner.py
│   └── robots.py
├── routes.py
├── schema.sql
├── static
│   
├── templates
└── test

Dockerfile

代码语言:javascript
复制
FROM tiangolo/uwsgi-nginx-flask:python3.8


COPY . /app

RUN python -m pip install --upgrade pip

COPY ./requirements.txt /var/www/requirements.txt

RUN apt update && apt install -qy libmariadbclient-dev gcc

RUN pip3 install -r /var/www/requirements.txt

这个项目在我的本地主机上运行,没有问题.只想运行图像对接显示错误,而不是连接到mysql ..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 07:15:04

Dockerfile不包括带有映像的MySQL服务器。容器的最佳实践是在每个容器中保留一个服务,因此运行一个MySQL服务容器将意味着运行两个单独的容器--一个用于web应用程序,另一个用于MySQL服务器。

码头工是处理此用例的一种合理方法。指定包含服务定义的docker-compose.yml

代码语言:javascript
复制
version: '2.0'
services:
  web:
    build: .
    ports: [ "5000:5000" ]
    links: [ "mysql" ]
  mysql:
    image: mysql
    [... some other configuration parameters to set up the database root account ...]
    volumes: [ "mysqldata:/var/lib/mysql" ]
volumes: { mysqldata: {} }

这里引用的MySQL图像是码头枢纽的官方MySQL形象

之后,您可以连接到应用程序配置文件中的"mysql“而不是"localhost”。

或者,将应用程序配置文件指向已经运行的MySQL服务,并设置数据库。记住,容器中的localhost不是您的本地机器--它是容器。您可能需要适当配置Docker网络才能让容器访问您的机器或MySQL主机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62318906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档