আমি মিগুয়েল গ্রিনবার্গের মেগা-টিউটোরিয়াল থেকে মাইক্রোব্লগ অ্যাপের উপর ভিত্তি করে একটি ফ্লাস্ক অ্যাপ্লিকেশনটিতে কাজ করছি। কোড এখানে বাস করে: https://github.com/dnilasor/quickgig । আমার একটি লিঙ্কযুক্ত মাইএসকিউএল 5.7 ধারক সহ একটি ওয়ার্কিং ডকার বাস্তবায়ন রয়েছে। আজ আমি ফ্লাস্ক-অ্যাডমিন মডিউলটি ব্যবহার করে একটি অ্যাডমিন ভিউ ফাংশন যুক্ত করেছি। এটি 'ফ্লাস্ক রান' এর মাধ্যমে ফ্ল্যাশ সার্ভারে স্থানীয়ভাবে (ওএসএক্স) সুন্দরভাবে পরিবেশন করা কাজ করে তবে আমি যখন নতুন ডকার চিত্রটি তৈরি করি এবং চালিত করি (পাইথন: 3.8-আলপাইন ভিত্তিতে) এটি একটি OSError: libc not found
ত্রুটির সাথে বুটে ক্র্যাশ হয় , যার কোডটি মনে হয় একটি অজানা গ্রন্থাগার নির্দেশ করুন
আমার কাছে দেখে মনে হচ্ছে গুনিকর্ন আমার সংযোজনগুলি অনুসরণ করে অ্যাপটি পরিবেশন করতে অক্ষম unable আমার ক্লাসমেট আর আমি স্ট্যাম্পড!
আমি মূলত পাইথনটি ব্যবহার করে ত্রুটি পেয়েছি: 3.6-আলপাইন বেস চিত্রটি এবং তাই কোনও ফল লাভ করার জন্য 3.7 এবং 3.8 দিয়ে চেষ্টা করেছি। আমি আরও লক্ষ্য করেছি যে আমি অপ্রয়োজনীয়ভাবে পিএমওয়াইএসকিউএল যোগ করছিলাম, একবার প্রয়োজনীয়তা.txt সংস্করণ নং উল্লেখ করে। এবং আবার স্পষ্টভাবে ডকস্পাইলে কোনও অনুমান ছাড়াই। প্রয়োজনীয়তা.টিএসটি এন্ট্রি সরানো হয়েছে। এছাড়াও ফ্লস্ক-অ্যাডমিন সংস্করণ নম্বর বাড়ানোর চেষ্টা করুন। উপর নিচ. এছাড়াও আমার ডাটাবেস স্থানান্তরগুলি পরিষ্কার করার চেষ্টা করেছি কারণ আমি দেখেছি যে একাধিক মাইগ্রেশন ফাইলগুলি কনটেইনারটি বুট করতে ব্যর্থ হয়েছে (স্বীকার করেছেন এসকিউএলাইট ব্যবহার করার সময় এটি ছিল)। এখন কেবলমাত্র একটি একক মাইগ্রেশন ফাইল রয়েছে এবং স্ট্যাক ট্রেসের উপর ভিত্তি করে মনে হচ্ছে এটি flask db upgrade
ঠিক ঠিক কাজ করে।
আমার এখনও একটি জিনিস চেষ্টা করার বাকি একটি ভিন্ন বেস চিত্র (কম ন্যূনতম?), শীঘ্রই চেষ্টা করে এটি আপডেট করতে পারে। তবে বিষয়টি আমার কাছে এতটা রহস্যজনক যে আমি ভেবেছিলাম যে এটি অন্য কেউ দেখেছেন কিনা তা জিজ্ঞাসা করার সময় হয়েছে:)
আমি এই সকেট বাগটি খুঁজে পেয়েছি যা সম্ভবত সম্ভাব্য প্রাসঙ্গিক বলে মনে হচ্ছে তবে এটি অজগর 3.8 এ পুরোপুরি ঠিক করার কথা ছিল।
এছাড়াও অবগতির জন্য আমি পরামর্শ কিছু অনুসৃত এখানে বৃত্তাকার আমদানির এবং আমার অ্যাডমিন নিয়ামক ফাংশন ভিতরে আমদানিকৃত create_app
।
Dockerfile:
FROM python:3.8-alpine
RUN adduser -D quickgig
WORKDIR /home/quickgig
COPY requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install -r requirements.txt
RUN venv/bin/pip install gunicorn pymysql
COPY app app
COPY migrations migrations
COPY quickgig.py config.py boot.sh ./
RUN chmod +x boot.sh
ENV FLASK_APP quickgig.py
RUN chown -R quickgig:quickgig ./
USER quickgig
EXPOSE 5000
ENTRYPOINT ["./boot.sh"]
boot.sh:
#!/bin/sh
source venv/bin/activate
while true; do
flask db upgrade
if [[ "$?" == "0" ]]; then
break
fi
echo Upgrade command failed, retrying in 5 secs...
sleep 5
done
# flask translate compile
exec gunicorn -b :5000 --access-logfile - --error-logfile - quickgig:app
Init .py এ বাস্তবায়ন
from flask_admin import Admin
app_admin = Admin(name='Dashboard')
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(config_class)
...
app_admin.init_app(app)
...
from app.admin import add_admin_views
add_admin_views()
...
return app
from app import models
admin.py:
from flask_admin.contrib.sqla import ModelView
from app.models import User, Gig, Neighborhood
from app import db
# Add views to app_admin
def add_admin_views():
from . import app_admin
app_admin.add_view(ModelView(User, db.session))
app_admin.add_view(ModelView(Neighborhood, db.session))
app_admin.add_view(ModelView(Gig, db.session))
requirements.txt:
alembic==0.9.6
Babel==2.5.1
blinker==1.4
certifi==2017.7.27.1
chardet==3.0.4
click==6.7
dominate==2.3.1
elasticsearch==6.1.1
Flask==1.0.2
Flask-Admin==1.5.4
Flask-Babel==0.11.2
Flask-Bootstrap==3.3.7.1
Flask-Login==0.4.0
Flask-Mail==0.9.1
Flask-Migrate==2.1.1
Flask-Moment==0.5.2
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
guess-language-spirit==0.5.3
idna==2.6
itsdangerous==0.24
Jinja2==2.10
Mako==1.0.7
MarkupSafe==1.0
PyJWT==1.5.3
python-dateutil==2.6.1
python-dotenv==0.7.1
python-editor==1.0.3
pytz==2017.2
requests==2.18.4
six==1.11.0
SQLAlchemy==1.1.14
urllib3==1.22
visitor==0.1.3
Werkzeug==0.14.1
WTForms==2.1
আমি যখন ইন্টারেক্টিভ টার্মিনালে কনটেইনারটি চালিত করি আমি নীচের স্ট্যাক ট্রেসটি দেখতে পাচ্ছি:
(venv) ****s-MacBook-Pro:quickgig ****$ docker run -ti quickgig:v7
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 1f5feeca29ac, test
Traceback (most recent call last):
File "/home/quickgig/venv/bin/gunicorn", line 6, in <module>
from gunicorn.app.wsgiapp import run
File "/home/quickgig/venv/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 9, in <module>
from gunicorn.app.base import Application
File "/home/quickgig/venv/lib/python3.8/site-packages/gunicorn/app/base.py", line 12, in <module>
from gunicorn.arbiter import Arbiter
File "/home/quickgig/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 16, in <module>
from gunicorn import sock, systemd, util
File "/home/quickgig/venv/lib/python3.8/site-packages/gunicorn/sock.py", line 14, in <module>
from gunicorn.socketfromfd import fromfd
File "/home/quickgig/venv/lib/python3.8/site-packages/gunicorn/socketfromfd.py", line 26, in <module>
raise OSError('libc not found')
OSError: libc not found
আমি অ্যাপটি বুট করার / কনটেইনারটির ভিতরে বন্দুকধার দ্বারা পরিবেশন করা চাই যাতে আমি আমার দলের সাথে ডকার বাস্তবায়ন এবং বিকাশের জন্য স্থানীয় মাইএসকিউএল এর ব্যথা বনাম ডকারাইজড মাইএসকিউএল লিভারেজ চালিয়ে যেতে পারি can আপনি কি পরামর্শ দিতে পারেন?