sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name "db" to address: nodename nor servname provided, or not known (Background on this error at: https://sqlalche.me/e/20/e3q8)

Hello I have implemented a project that demonstrates tasks with Postgresql using Python(Flask), Docker, Kubernetes. But I am getting an error.
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name “db” to address: nodename nor servname provided, or not known
(Background on this error at: Error Messages — SQLAlchemy 2.0 Documentation)

services:
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: gorevler
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data/

  app:
    build: ../backend  # Uygulamanızın Dockerfile'ının bulunduğu dizin
    ports:
      - "9000:5000"  # Uygulamanızın portu (Flask varsayılan olarak 5000 kullanır)
    environment:
      DATABASE_URL: postgresql://postgres:password@db:5432/gorevler
      DB_HOST: db
      DB_PORT: 5432
      DB_NAME: gorevler
      DB_USER: postgres
      DB_PASSWORD: password
    depends_on:
      - db

volumes:
  postgres_data:

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Enum, ForeignKey
from enum import Enum as PyEnum
import os
import time

app = Flask(__name__)
db_host = os.environ.get('DB_HOST', 'localhost')  # Varsayılan olarak 'localhost' kullan
db_port = os.environ.get('DB_PORT', '5432')  # Varsayılan PostgreSQL portu
db_name = os.environ.get('DB_NAME', 'gorevler')
db_user = os.environ.get('DB_USER', 'postgres')
db_password = os.environ.get('DB_PASSWORD', 'password')
db_host = os.environ.get('DB_HOST', 'db')

# Veritabanı yapılandırması
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@db:5432/gorevler'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

# Veritabanı Modelleri
class GorevDurumu(PyEnum):
    YENI = 'Yeni'
    DEVAM_EDEN = 'Devam Ediyor'
    TAMAMLANDI = 'Tamamlandı'

class GorevOnceligi(PyEnum):
    DUSUK = 'Düşük'
    ORTA = 'Orta'
    YUKSEK = 'Yüksek'

class Gorev(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    baslik = db.Column(db.String(255), nullable=False)
    aciklama = db.Column(db.Text)
    durum = db.Column(Enum(GorevDurumu), default=GorevDurumu.YENI)
    oncelik = db.Column(Enum(GorevOnceligi), default=GorevOnceligi.ORTA)
    kategori_id = db.Column(db.Integer, ForeignKey('kategori.id'))  # kategori_id eklendi

# API Endpoint'leri

# Ana Sayfa - API Kontrolü için
@app.route('/', methods=['GET'])
def ana_sayfa():
    return jsonify({"mesaj": "Görev Yönetimi API'si çalışıyor!"}), 200

# Görev oluştur
@app.route('/gorevler', methods=['POST'])
def gorev_olustur():
    data = request.get_json()

    yeni_gorev = Gorev(
        baslik=data['baslik'],
        aciklama=data.get('aciklama'),
        durum=GorevDurumu(data.get('durum', 'YENI')),
        oncelik=GorevOnceligi(data.get('oncelik', 'ORTA')),
        kategori_id=data.get('kategori_id')  # kategori_id eklendi
    )
    db.session.add(yeni_gorev)
    db.session.commit()
    return jsonify({'message': 'Görev oluşturuldu!', 'id': yeni_gorev.id}), 201

# Tüm görevleri listele
@app.route('/gorevler', methods=['GET'])
def gorevleri_listele():
    gorevler = Gorev.query.all()
    sonuc = [
        {
            'id': g.id,
            'baslik': g.baslik,
            'aciklama': g.aciklama,
            'durum': g.durum.value,
            'oncelik': g.oncelik.value,
            'kategori_id': g.kategori_id  # kategori_id eklendi
        }
        for g in gorevler
    ]
    return jsonify(sonuc), 200

# Tek bir görevi getir
@app.route('/gorevler/<int:gorev_id>', methods=['GET'])
def gorev_getir(gorev_id):
    gorev = Gorev.query.get(gorev_id)
    if not gorev:
        return jsonify({'error': 'Görev bulunamadı!'}), 404

    sonuc = {
        'id': gorev.id,
        'baslik': gorev.baslik,
        'aciklama': gorev.aciklama,
        'durum': gorev.durum.value,
        'oncelik': gorev.oncelik.value,
        'kategori_id': gorev.kategori_id  # kategori_id eklendi
    }
    return jsonify(sonuc), 200

# Görev güncelle
@app.route('/gorevler/<int:gorev_id>', methods=['PUT'])
def gorev_guncelle(gorev_id):
    gorev = Gorev.query.get(gorev_id)
    if not gorev:
        return jsonify({'error': 'Görev bulunamadı!'}), 404

    data = request.get_json()
    gorev.baslik = data.get('baslik', gorev.baslik)
    gorev.aciklama = data.get('aciklama', gorev.aciklama)
    gorev.durum = GorevDurumu(data.get('durum', gorev.durum.value))
    gorev.oncelik = GorevOnceligi(data.get('oncelik', gorev.oncelik.value))
    gorev.kategori_id = data.get('kategori_id', gorev.kategori_id)  # kategori_id güncellendi

    db.session.commit()
    return jsonify({'message': 'Görev güncellendi!'}), 200

# Görev sil
@app.route('/gorevler/<int:gorev_id>', methods=['DELETE'])
def gorev_sil(gorev_id):
    gorev = Gorev.query.get(gorev_id)
    if not gorev:
        return jsonify({'error': 'Görev bulunamadı!'}), 404

    db.session.delete(gorev)
    db.session.commit()
    return jsonify({'message': 'Görev silindi!'}), 200

# Veritabanı tablolarını oluştur ve uygulamayı çalıştır
if __name__ == '__main__':
    with app.app_context():
        time.sleep(10)  # Veritabanının başlatılmasını beklemek için 10 saniye bekle
        db.create_all()
    app.run(debug=True, host='0.0.0.0')

Check if the database container is running properly. Since the two containers are in the same network, name resolution should work, but I can imagine the postgres container failing, so there is nothing the domain could be resolved to.

update:

I moved your message from the other topic here merging the two topics which were both in wrong categories as this issue has nothing to do with Docker Hub and the question is not for Docker Support.

Hello.My “task-management-api” project was an API project designed to create, read, update and delete tasks. We did the following within the scope of the project:

We defined endpoints for tasks.
We used HTTP methods (GET, POST, PUT, DELETE) correctly.
We used a database (e.g. PostgreSQL, MySQL) to store data permanently.
We used ORM (Object-Relational Mapping) tools (e.g. Entity Framework, SQLAlchemy) to perform database operations.
We implemented authentication and authorization mechanisms to prevent unauthorized access to the API.
We used JWT (JSON Web Tokens) for API security.
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name “db” to address: nodename nor servname provided, or not known

(Background on this error at: Error Messages — SQLAlchemy 2.0 Documentation)
=>Can you help me?

Thank you so much I will trying at now