create new Dockerfile using poetry (#806)

* create new Dockerfile using poetry

* dont use unsure docker hub image

* add example env variable to docker command

* remove copy of lnbits, and order of commands

* add build.py for static files

* add compiled resources to docker ignore, so we don't accidently add it to image

* use generic python

* CMD with arguments

Co-authored-by: dni <dni.khr@gmail.com>
This commit is contained in:
dni ⚡ 2022-08-04 08:05:51 +02:00 committed by GitHub
parent fa2a0ab1bd
commit 48a57513f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 55 deletions

View file

@ -1,49 +1,12 @@
# Build image
FROM python:3.7-slim as builder
# Setup virtualenv
ENV VIRTUAL_ENV=/opt/venv
RUN python -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Install build deps
FROM python:3.9-slim
RUN apt-get update
RUN apt-get install -y --no-install-recommends build-essential pkg-config libpq-dev
RUN python -m pip install --upgrade pip
RUN pip install wheel
# Install runtime deps
COPY requirements.txt /tmp/requirements.txt
RUN pip install -r /tmp/requirements.txt
# Install c-lightning specific deps
RUN pip install pyln-client
# Install LND specific deps
RUN pip install lndgrpc
# Production image
FROM python:3.7-slim as lnbits
# Run as non-root
USER 1000:1000
# Copy over virtualenv
ENV VIRTUAL_ENV="/opt/venv"
COPY --from=builder --chown=1000:1000 $VIRTUAL_ENV $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Copy in app source
RUN apt-get install -y curl
RUN curl -sSL https://install.python-poetry.org | python3 -
ENV PATH="/root/.local/bin:$PATH"
WORKDIR /app
COPY --chown=1000:1000 lnbits /app/lnbits
# Staticfiles
COPY --chown=1000:1000 build.py /app
RUN python build.py
ENV LNBITS_PORT="5000"
ENV LNBITS_HOST="0.0.0.0"
COPY . .
RUN poetry config virtualenvs.create false
RUN poetry install --no-dev --no-root
RUN poetry run python build.py
EXPOSE 5000
CMD ["sh", "-c", "uvicorn lnbits.__main__:app --port $LNBITS_PORT --host $LNBITS_HOST"]
CMD ["poetry", "run", "lnbits", "--port", "5000", "--host", "0.0.0.0"]