From 48a57513f474b42461193057385c98ad6420a99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Thu, 4 Aug 2022 08:05:51 +0200 Subject: [PATCH] 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 --- .dockerignore | 4 +++ Dockerfile | 55 +++++++------------------------------- docs/guide/installation.md | 16 +++++------ 3 files changed, 20 insertions(+), 55 deletions(-) diff --git a/.dockerignore b/.dockerignore index 51cee13c3..005f64cc4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,6 +6,10 @@ tests venv tools +lnbits/static/css/* +lnbits/static/bundle.js +lnbits/static/bundle.css + *.md *.log diff --git a/Dockerfile b/Dockerfile index f8a5c6926..c4fcb9596 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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"] diff --git a/docs/guide/installation.md b/docs/guide/installation.md index ead866196..4bb5539da 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -27,12 +27,12 @@ export PATH="/home/ubuntu/.local/bin:$PATH" # or whatever is suggested in the po poetry env use python3.9 poetry install --no-dev -mkdir data +mkdir data cp .env.example .env sudo nano .env # set funding source -``` +``` #### Running the server @@ -254,9 +254,9 @@ If you want to run LNbits on your Umbrel but want it to be reached through clear To install using docker you first need to build the docker image as: ``` -git clone https://github.com/lnbits/lnbits.git -cd lnbits/ # ${PWD} referred as -docker build -t lnbits . +git clone https://github.com/lnbits/lnbits-legend.git +cd lnbits-legend +docker build -t lnbits-legend . ``` You can launch the docker in a different directory, but make sure to copy `.env.example` from lnbits there @@ -267,17 +267,15 @@ cp /.env.example .env and change the configuration in `.env` as required. -Then create the data directory for the user ID 1000, which is the user that runs the lnbits within the docker container. - +Then create the data directory ``` mkdir data -sudo chown 1000:1000 ./data/ ``` Then the image can be run as: ``` -docker run --detach --publish 5000:5000 --name lnbits --volume ${PWD}/.env:/app/.env --volume ${PWD}/data/:/app/data lnbits +docker run --detach --publish 5000:5000 --name lnbits-legend -e "LNBITS_BACKEND_WALLET_CLASS='FakeWallet'" --volume ${PWD}/.env:/app/.env --volume ${PWD}/data/:/app/data lnbits-legend ``` Finally you can access your lnbits on your machine at port 5000.