Hier ist, was ich bisher versucht habe:
Erstellte einen neuen Benutzer anstelle von Root und legte die Berechtigungen und ein neues Passwort fest .
Beide Container, den MySQL-Container und den Flask-Container, zum Bridge-Netzwerk hinzugefügt.
Address-bind = 0.0.0.0 hinzugefügt
Es wurde versucht, eine Verbindung herzustellen Ich habe es manuell in den Flaschencontainer eingefügt und es hat irgendwie funktioniert, was interessant ist.
Das Problem, das ich habe, ist, dass ich immer wieder die Fehlermeldung erhalte, dass der Zugriff für meinen Benutzer verweigert wird und er mir die IP gibt des Flaschencontainers, was seltsam ist, und ich habe diese spezifische IP als Host zum mysql.user hinzugefügt und immer noch kein Glück, und ich habe auch den Benutzer mit „%“ und localhost hinzugefügt und immer noch ohne Glück.
Hier ist der Fehler: sqlalchemy.exc.OperationalError: (MySQLdb._Exceptions.OperationalError) (1045, „Zugriff verweigert für Benutzer ‚alex‘@‘172.18.0.3‘ (mit Passwort: JA)“)
Docker-Datei:
Code: Select all
FROM python:3.10.9
ENV PYTHONBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY ./ app
CMD ["python", "main.py"]
Code: Select all
services:
backend :
environment:
- FLASK_APP=main.py
build:
context: .
dockerfile: Dockerfile
ports:
- 8001:5000
volumes:
- .:/app
depends_on:
- db
db:
image: mysql:8.0.39
restart: always
environment:
MYSQL_DATABASE: main
#MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_USER: alex
MYSQL_PASSWORD: root_password
MYSQL_ROOT_PASSWORD: root_pass
volumes:
- .dbdata:/var/lib/mysql
ports:
- 33069:3306
Code: Select all
from flask import Flask
from flask_cors import CORS
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import UniqueConstraint
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://alex:root_password@db:3306/main'
CORS(app)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
print(app.config['SQLALCHEMY_DATABASE_URI'])
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=False)
title = db.Column(db.String(200))
image = db.Column(db.String(200))
class ProductUser(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer)
product_id = db.Column(db.Integer)
UniqueConstraint('user_id', 'product_id', name='product_user_unique')
@app.route('/')
def index():
return 'Hello'
print(app.config['SQLALCHEMY_DATABASE_URI'])
if __name__ == '__main__':
app.run(debug=True , host='0.0.0.0')