Docker¶
There is no limitation to use BINP in docker.
Ensure
Ensure, that your requirements.txt file contains
binp
anduvicorn[standard]
(or just usepip freeze
if you already installed it)Pack your application as described in DockerHub.
Define volume
/usr/src/app/data
and expose port80
, add envDB_URL=sqlite:////data/data.db
Change entry point to
uvicorn --host 0.0.0.0 --port 80 <your main script>:binp.app
After that you can mount /data
for persistent storage
Note
If you are using Debian/Ubuntu as source platform and used pip freeze
- be sure that you removed pkg-resource
dependencies: it’s bug.
- Dockerfile
Assuming that your main script same as in examples: example.py
FROM python:3.8
ENV DB_URL=sqlite:////data/data.db
ENV PYTHONUNBUFFERED=TRUE
EXPOSE 80
VOLUME /data
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "uvicorn", "--host", "0.0.0.0", "--port", "80", "example:binp.app"]
One line to build and run (first build will take some time):
docker run --rm -p 8080:80 $(docker build -q .)