Docker buid issue

This commit is contained in:
2025-10-17 10:54:34 +05:30
parent 1452aafb42
commit b0ffbe1d46
4 changed files with 31 additions and 4 deletions

View File

@ -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

View File

@ -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"]

View File

@ -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')

View File

@ -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: