FROM python:3.12-bookworm ENV DEBIAN_FRONTEND=noninteractive RUN useradd -m -u 1000 user WORKDIR /app COPY ./requirements.txt requirements.txt RUN pip install --no-cache-dir --upgrade -r requirements.txt RUN apt-get update && apt-get install -y \ curl \ ca-certificates \ tar \ gzip \ procps \ libcurl4 \ libgssapi-krb5-2 \ libwrap0 \ libsasl2-2 \ libsasl2-modules \ libsasl2-modules-gssapi-mit \ openssl \ liblzma5 \ libldap-2.5-0 \ libldap-common \ && rm -rf /var/lib/apt/lists/* ARG MONGO_VERSION=7.0.24 ARG MONGO_TARBALL_URL=https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-${MONGO_VERSION}.tgz RUN curl -fsSL "${MONGO_TARBALL_URL}" -o /tmp/mongodb.tgz \ && tar -xzf /tmp/mongodb.tgz -C /opt \ && ln -s /opt/mongodb-linux-x86_64-ubuntu2204-${MONGO_VERSION} /opt/mongodb \ && ln -s /opt/mongodb/bin/mongod /usr/local/bin/mongod \ && ln -s /opt/mongodb/bin/mongos /usr/local/bin/mongos \ && rm /tmp/mongodb.tgz COPY --chown=user . /app USER user ENTRYPOINT ["/bin/bash", "-lc", "\ mkdir -p /tmp/mongo-data /tmp/mongo-logs /tmp/mongo-run && \ rm -f /tmp/mongo-run/mongod.pid && \ mongod --bind_ip 127.0.0.1 \ --dbpath /tmp/mongo-data \ --logpath /tmp/mongo-logs/mongod.log \ --pidfilepath /tmp/mongo-run/mongod.pid \ --logappend \ --fork && \ sleep 3 && \ python -c \"from pymongo import MongoClient; c = MongoClient('mongodb://127.0.0.1:27017/', serverSelectionTimeoutMS=5000); print(c.admin.command('ping'))\" && \ python -c \"from pymongo import MongoClient; c = MongoClient('mongodb://127.0.0.1:27017/', serverSelectionTimeoutMS=5000); db = c['huggingFaceData']; db.create_collection('rooms') if 'rooms' not in db.list_collection_names() else None; db.create_collection('counters') if 'counters' not in db.list_collection_names() else None; db.counters.update_one({'_id':'room_id'}, {'\\$setOnInsert': {'seq': 0}}, upsert=True); db.rooms.create_index('user_id'); print('Mongo init complete')\" && \ exec \"$@\"", "--"] CMD ["gunicorn", "-k", "geventwebsocket.gunicorn.workers.GeventWebSocketWorker", "-w", "1", "--bind", "0.0.0.0:7860", "chat_application.main:app"]