FROM python:3.8-bullseye COPY ./requirements.txt /app/requirements.txt RUN pip install --upgrade pip RUN pip install wheel RUN pip install -r /app/requirements.txt RUN pip install gunicorn uvicorn RUN curl --location https://raw.githubusercontent.com/vishnubob/wait-for-it/81b1373f17855a4dc21156cfe1694c31d7d1792e/wait-for-it.sh > /usr/bin/wait-for-it \ && chmod +x /usr/bin/wait-for-it COPY . /app EXPOSE 8000 WORKDIR /app CMD [ \ "/usr/bin/wait-for-it", "postgres:5432", "--timeout=45", "--strict", \ "--", \ "sh", "-c", \ # might use exact migration hash here instead of upgrading to the latest "heads" "alembic upgrade heads \ && \ cd / \ && \ gunicorn --workers=2 --worker-class=app.util.MyUvicornWorker --bind=0.0.0.0:8000 \ app.main:app" \ ]