From b0ffbe1d465ba606852c1b0d38c51827d68c5613 Mon Sep 17 00:00:00 2001 From: mukeshs Date: Fri, 17 Oct 2025 10:54:34 +0530 Subject: [PATCH] Docker buid issue --- Machine-Backend/.env | 9 ++++++++- Machine-Backend/Dockerfile | 7 ++++++- Machine-Backend/app/__init__.py | 3 ++- docker-compose.yml | 16 +++++++++++++++- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Machine-Backend/.env b/Machine-Backend/.env index 55c51c2..d25c380 100644 --- a/Machine-Backend/.env +++ b/Machine-Backend/.env @@ -6,14 +6,21 @@ PAYU_MERCHANT_SALT=DusXSSjqqSMTPSpw32hlFXF6LKY2Zm3y PAYU_SUCCESS_URL=http://localhost:4200/payment-success PAYU_FAILURE_URL=http://localhost:4200/payment-failure +# Flask Configuration FLASK_ENV=production +FLASK_APP=run.py +# MySQL Configuration (for production/Docker) MYSQL_HOST=db MYSQL_USER=vendinguser MYSQL_PASSWORD=vendingpass MYSQL_DATABASE=vending -SQLITE_DB_PATH=machines +# SQLite Configuration (for development) +SQLITE_DB_PATH=machines.db + +# SQLAlchemy Configuration +SQLALCHEMY_ECHO=False BREVO_SMTP_EMAIL=smukeshsn2000@gmail.com BREVO_SMTP_KEY=your-brevo-smtp-key diff --git a/Machine-Backend/Dockerfile b/Machine-Backend/Dockerfile index 8cfc572..2c25b1f 100644 --- a/Machine-Backend/Dockerfile +++ b/Machine-Backend/Dockerfile @@ -7,6 +7,11 @@ WORKDIR /app # Prevent Python from buffering stdout/stderr ENV PYTHONUNBUFFERED=1 +# Install mysql-client for database connectivity checks +RUN apt-get update && \ + apt-get install -y default-mysql-client curl && \ + rm -rf /var/lib/apt/lists/* + # Copy requirements first for better caching COPY requirements.txt . @@ -28,4 +33,4 @@ ENV FLASK_RUN_PORT=5000 EXPOSE 5000 # Use Gunicorn for production -CMD ["gunicorn", "--bind", "0.0.0.0:5000", "run:app"] +CMD ["gunicorn", "--bind", "0.0.0.0:5000", "run:app"] \ No newline at end of file diff --git a/Machine-Backend/app/__init__.py b/Machine-Backend/app/__init__.py index 6b273ec..fd09701 100644 --- a/Machine-Backend/app/__init__.py +++ b/Machine-Backend/app/__init__.py @@ -42,8 +42,9 @@ def create_app(): if not all([mysql_host, mysql_user, mysql_password, mysql_db]): raise ValueError("Missing required MySQL environment variables") + # FIXED: Use port 3306 (internal Docker port, not the host port 3307) app.config['SQLALCHEMY_DATABASE_URI'] = ( - f'mysql+pymysql://{mysql_user}:{mysql_password}@{mysql_host}:3307/{mysql_db}' + f'mysql+pymysql://{mysql_user}:{mysql_password}@{mysql_host}:3306/{mysql_db}' ) else: sqlite_db_path = os.getenv('SQLITE_DB_PATH', 'machines.db') diff --git a/docker-compose.yml b/docker-compose.yml index a84d468..ea4ffef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -47,7 +47,21 @@ services: retries: 3 start_period: 40s command: > - sh -c "python seed_user.py && gunicorn --bind 0.0.0.0:5000 --workers 2 --timeout 120 run:app" + sh -c " + echo '⏳ Waiting for MySQL to be ready for connections...' + for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do + if mysql -h db -u vendinguser -pvendingpass -e 'SELECT 1' >/dev/null 2>&1; then + echo '✓ MySQL is ready!' + break + fi + echo 'Waiting for MySQL... (attempt' $$i'/15)' + sleep 3 + done + echo '🌱 Running database seed script...' + python seed_user.py + echo '🚀 Starting Gunicorn server...' + gunicorn --bind 0.0.0.0:5000 --workers 2 --timeout 120 run:app + " frontend: build: