-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathDockerfile
More file actions
64 lines (56 loc) · 2.98 KB
/
Copy pathDockerfile
File metadata and controls
64 lines (56 loc) · 2.98 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
FROM ubuntu:24.04 AS builder-base
RUN DEBIAN_FRONTEND=noninteractive apt update -y \
&& apt install -y wget curl build-essential cmake clang openssl \
libssl-dev zlib1g-dev gperf wget git ninja-build libsodium-dev libmicrohttpd-dev liblz4-dev libgsl-dev libblas-dev libgslcblas0 \
pkg-config autoconf automake libtool libjemalloc-dev lsb-release software-properties-common gnupg \
libabsl-dev libbenchmark-dev libboost-context1.83-dev libboost-coroutine1.83-dev libboost-filesystem1.83-dev \
libboost-iostreams1.83-dev libboost-locale1.83-dev libboost-program-options1.83-dev libboost-regex1.83-dev \
libboost-stacktrace1.83-dev libboost1.83-dev libbson-dev libbz2-dev libc-ares-dev libcctz-dev libcrypto++-dev \
libcurl4-openssl-dev libdouble-conversion-dev libev-dev libfmt-dev libgflags-dev libgmock-dev libgtest-dev \
libhiredis-dev libidn11-dev libjemalloc2 libjemalloc-dev libkrb5-dev libldap2-dev liblz4-dev \
libnghttp2-dev libpugixml-dev libsnappy-dev libsasl2-dev libssl-dev libxxhash-dev libyaml-cpp0.8 libyaml-cpp-dev \
libzstd-dev libssh2-1-dev netbase python3-dev python3-jinja2 python3-venv python3-yaml \
ragel yasm zlib1g-dev liblzma-dev libre2-dev clang-format gcc g++ yq gdb lsb-release software-properties-common gnupg \
&& rm -rf /var/lib/apt/lists/*
RUN DEBIAN_FRONTEND=noninteractive wget https://apt.llvm.org/llvm.sh && \
chmod +x llvm.sh && \
./llvm.sh 21 all && \
rm -rf /var/lib/apt/lists/*
ENTRYPOINT [ "/bin/bash" ]
FROM builder-base AS builder
ENV CC=/usr/bin/clang-21
ENV CXX=/usr/bin/clang++-21
ENV CCACHE_DISABLE=1
ENV BUILD_TON_PLAYGROUND=0
ENV USERVER_FEATURE_STACK_USAGE_MONITOR=0
COPY examples/ /app/examples/
COPY py/ /app/py/
COPY tonlib-multiclient/ /app/tonlib-multiclient/
COPY ton-http-api/ /app/ton-http-api/
COPY playground/ /app/playground/
COPY CMakeLists.txt /app/CMakeLists.txt
COPY external/ /app/external/
ARG BUILD_WITH_TON_REPO
ARG BUILD_WITH_TON_REPO
ARG API_VERSION_TAG
RUN if [ -n "${BUILD_WITH_TON_REPO}" ]; then \
echo "Using ton from ${BUILD_WITH_TON_REPO}:${BUILD_WITH_TON_REPO:-master}"; \
rm -rf /app/external/ton/ && \
git clone --recursive --branch ${BUILD_WITH_TON_REPO:-master} ${BUILD_WITH_TON_REPO} /app/external/ton; \
else \
echo "Using ton submodule"; \
fi
WORKDIR /app/build
RUN touch /app/suppression_mappings.txt \
&& cmake -DCMAKE_BUILD_TYPE=Release -DAPI_VERSION_TAG=${API_VERSION_TAG:-2.1} -DTON_USE_STATIC_ZLIB=1 -DUSERVER_USE_STATIC_LIBS=1 -DPORTABLE=1 -GNinja .. \
&& ninja -j$(nproc)
# end builder
FROM ubuntu:24.04 AS http-api-cpp
RUN DEBIAN_FRONTEND=noninteractive apt update -y \
&& apt install -y curl libcurl4 libfmt9 libsodium23 libcctz2 libatomic1 libicu74 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/build/ton-http-api/ton-http-api-cpp /usr/bin/
COPY ton-http-api/static/ /static/
COPY config/static_config.yaml /app/static_config.yaml
COPY scripts/entrypoint.sh /app/entrypoint.sh
ENTRYPOINT [ "/app/entrypoint.sh" ]