-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathbtclnd.Dockerfile
More file actions
50 lines (40 loc) · 1.75 KB
/
Copy pathbtclnd.Dockerfile
File metadata and controls
50 lines (40 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#
# Dockerfile for bitcart-btclnd daemon
#
# The LND binary itself is fetched at runtime by the daemon
# (see daemons/lnd_process.py:LNDBinaryManager) and cached on the
# data volume, so it is intentionally NOT baked into the image.
#
FROM python:3.12-alpine AS base
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
ENV ELECTRUM_USER=electrum
ENV ELECTRUM_HOME=/home/$ELECTRUM_USER
ENV ELECTRUM_DIRECTORY=${ELECTRUM_HOME}/.bitcart-btclnd
ENV IN_DOCKER=1
ENV UV_COMPILE_BYTECODE=1
ENV UV_NO_CACHE=1
ENV UV_NO_SYNC=1
ENV BTCLND_HOST=0.0.0.0
LABEL org.bitcart.image=btclnd-daemon
FROM base AS compile-image
COPY bitcart $ELECTRUM_HOME/site
RUN apk add git python3-dev build-base libffi-dev && \
cd $ELECTRUM_HOME/site && \
uv sync --frozen --no-dev --group btclnd --group otel && \
uv run opentelemetry-bootstrap -a requirements | uv pip install --requirement -
FROM base AS build-image
RUN adduser -D $ELECTRUM_USER && \
mkdir -p /data/ && \
ln -sf /data/ $ELECTRUM_DIRECTORY && \
chown ${ELECTRUM_USER} $ELECTRUM_DIRECTORY && \
mkdir -p $ELECTRUM_HOME/site && \
chown ${ELECTRUM_USER} $ELECTRUM_HOME/site && \
apk add --no-cache libsecp256k1-dev git tor curl && \
apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/main jemalloc
COPY --from=compile-image --chown=electrum $ELECTRUM_HOME/site/.venv $ELECTRUM_HOME/.venv
COPY --from=compile-image --chown=electrum $ELECTRUM_HOME/site $ELECTRUM_HOME/site
ENV PYTHONUNBUFFERED=1 PYTHONMALLOC=malloc LD_PRELOAD=libjemalloc.so.2 MALLOC_CONF=background_thread:true,max_background_threads:1,metadata_thp:auto,dirty_decay_ms:80000,muzzy_decay_ms:80000
ENV PATH="$ELECTRUM_HOME/.venv/bin:$PATH"
USER $ELECTRUM_USER
WORKDIR $ELECTRUM_HOME/site
CMD ["just","daemon", "btclnd"]