11# syntax=docker/dockerfile:1.4
2- ARG BREAKPAD_IMAGE_TAG=v2022.07.12
2+ ARG BASE_IMAGE="cr.yandex/mirror/ubuntu"
3+ ARG BASE_IMAGE_TAG="focal"
4+ ARG BREAKPAD_IMAGE="cr.yandex/crp2lrlsrs36odlvd8dv/breakpad_init"
5+ ARG BREAKPAD_IMAGE_TAG="v2022.07.12"
6+
37# ##
48# Base image with required deb packages
59# ##
6- FROM cr.yandex/mirror/ubuntu:focal AS base
10+ FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} AS base
11+ RUN groupadd -r ydb && useradd --no-log-init -r -m -g ydb -G disk ydb && \
12+ apt-get -yqq update && \
13+ apt-get -yqq install --no-install-recommends libcap2-bin ca-certificates && \
14+ apt-get clean && rm -rf /var/lib/apt/lists/*
15+
16+ # ##
17+ # Base image with google brekpad assets
18+ # ##
19+ FROM ${BREAKPAD_IMAGE}:${BREAKPAD_IMAGE_TAG} AS breakpad_init
20+ FROM base AS base-breakpad
721RUN \
822 apt-get -yqq update && \
9- apt-get -yqq install libcap2-bin ca-certificates && \
10- apt-get -yqq clean all && \
11- rm -rf /var/lib/apt/lists/* && \
12- groupadd -r ydb && \
13- useradd --no-log-init -r -m -g ydb -G disk ydb
23+ apt-get -yqq install --no-install-recommends binutils gdb strace linux-tools-generic \
24+ apt-get clean && rm -rf /var/lib/apt/lists/*
25+ ENV LD_PRELOAD=libbreakpad_init.so
26+ ENV BREAKPAD_MINIDUMPS_PATH=/opt/ydb/volumes/coredumps
27+ ENV BREAKPAD_MINIDUMPS_SCRIPT=/opt/ydb/bin/minidump_script.py
28+ # breakpad binaries
29+ COPY --chmod=4644 --from=breakpad_init /usr/lib/libbreakpad_init.so /usr/lib/libbreakpad_init.so
30+ COPY --chmod=0755 --from=breakpad_init /usr/bin/minidump_stackwalk /usr/bin/minidump_stackwalk
31+ COPY --chmod=0755 --from=breakpad_init /usr/bin/minidump-2-core /usr/bin/minidump-2-core
32+ # minidump callback script
33+ COPY --chmod=0755 --chown=ydb /minidump_script.py /opt/ydb/bin/minidump_script.py
1434
15- FROM base AS base-debug
35+ # ##
36+ # Base image with debug packages
37+ # ##
38+ FROM base-breakpad AS base-debug
1639RUN \
1740 apt-get -yqq update && \
18- apt-get -yqq install dnsutils telnet netcat-openbsd iputils-ping gdb atop strace curl linux-tools-generic && \
19- apt-get -yqq clean all && \
20- rm -rf /var/lib/apt/lists/*
41+ apt-get -yqq --no-install-recommends dnsutils telnet netcat-openbsd iputils-ping curl && \
42+ apt-get clean all && rm -rf /var/lib/apt/lists/*
2143
2244FROM scratch AS license
2345# release information
2446COPY --chmod=0644 /AUTHORS /AUTHORS
2547COPY --chmod=0644 /LICENSE /LICENSE
2648COPY --chmod=0644 /README.md /README.md
2749
28- FROM scratch AS libs
50+ FROM scratch AS dynamic- libs
2951# dynamic libraries
3052COPY --chmod=0644 /libiconv.so /lib/libiconv.so
3153COPY --chmod=0644 /liblibidn-dynamic.so /lib/liblibidn-dynamic.so
3254COPY --chmod=0644 /liblibaio-dynamic.so /lib/liblibaio-dynamic.so
3355
34- # ##
35- # Image with setcap'ed ydb binary
36- # ##
56+ FROM base AS ydb-binary
57+ COPY --chmod=0755 --chown=ydb / ydb /opt/ydb/bin/ydb
58+
3759FROM base AS ydbd-setcap
38- COPY --chmod=0755 --chown=ydb /ydbd /ydbd
60+ COPY --chmod=0755 --chown=ydb /ydbd /opt/ydb/bin/ ydbd
3961# workaround for decrease image size
40- RUN /sbin/setcap CAP_SYS_RAWIO=ep /ydbd
62+ RUN /sbin/setcap CAP_SYS_RAWIO=ep /opt/ydb/bin/ ydbd
4163
4264# ##
4365# Release image
@@ -48,41 +70,52 @@ COPY --link --from=license /AUTHORS /AUTHORS
4870COPY --link --from=license /LICENSE /LICENSE
4971COPY --link --from=license /README.md /README.md
5072# dynamic libraries
51- COPY --link --from=libs /lib/libiconv.so /lib/libiconv.so
52- COPY --link --from=libs /lib/liblibidn-dynamic.so /lib/liblibidn-dynamic.so
53- COPY --link --from=libs /lib/liblibaio-dynamic.so /lib/liblibaio-dynamic.so
73+ COPY --link --from=dynamic- libs /lib/libiconv.so /lib/libiconv.so
74+ COPY --link --from=dynamic- libs /lib/liblibidn-dynamic.so /lib/liblibidn-dynamic.so
75+ COPY --link --from=dynamic- libs /lib/liblibaio-dynamic.so /lib/liblibaio-dynamic.so
5476# ydb binaries
55- COPY --chmod=0755 --chown =ydb /ydb /opt/ydb/bin/ydb
56- COPY --link --from=ydbd-setcap /ydbd /opt/ydb/bin/ydbd
77+ COPY --link --from =ydb-binary /opt/ydb/bin /ydb /opt/ydb/bin/ydb
78+ COPY --link --from=ydbd-setcap /opt/ydb/bin/ ydbd /opt/ydb/bin/ydbd
5779
5880WORKDIR /opt/ydb/bin
5981USER ydb
6082
6183# ##
62- # Breakpad image
84+ # Breakpad Image
6385# ##
64- FROM cr.yandex/crp2lrlsrs36odlvd8dv/breakpad_init:$BREAKPAD_IMAGE_TAG AS breakpad
86+ FROM base-breakpad AS breakpad
87+ # release information
88+ COPY --link --from=license /AUTHORS /AUTHORS
89+ COPY --link --from=license /LICENSE /LICENSE
90+ COPY --link --from=license /README.md /README.md
91+ # dynamic libraries
92+ COPY --link --from=dynamic-libs /lib/libiconv.so /lib/libiconv.so
93+ COPY --link --from=dynamic-libs /lib/liblibidn-dynamic.so /lib/liblibidn-dynamic.so
94+ COPY --link --from=dynamic-libs /lib/liblibaio-dynamic.so /lib/liblibaio-dynamic.so
95+ # ydb binaries
96+ COPY --link --from=ydb-binary /opt/ydb/bin/ydb /opt/ydb/bin/ydb
97+ COPY --link --from=ydbd-setcap /opt/ydb/bin/ydbd /opt/ydb/bin/ydbd
98+
99+ WORKDIR /opt/ydb/bin
100+ USER ydb
65101
66102# ##
67- # Debug image with additional packages
103+ # Debug Image
68104# ##
69105FROM base-debug AS debug
70106# release information
71107COPY --link --from=license /AUTHORS /AUTHORS
72108COPY --link --from=license /LICENSE /LICENSE
73109COPY --link --from=license /README.md /README.md
74110# dynamic libraries
75- COPY --link --from=libs /lib/libiconv.so /lib/libiconv.so
76- COPY --link --from=libs /lib/liblibidn-dynamic.so /lib/liblibidn-dynamic.so
77- COPY --link --from=libs /lib/liblibaio-dynamic.so /lib/liblibaio-dynamic.so
111+ COPY --link --from=dynamic- libs /lib/libiconv.so /lib/libiconv.so
112+ COPY --link --from=dynamic- libs /lib/liblibidn-dynamic.so /lib/liblibidn-dynamic.so
113+ COPY --link --from=dynamic- libs /lib/liblibaio-dynamic.so /lib/liblibaio-dynamic.so
78114# ydb binaries
79- COPY --chmod=0755 --chown=ydb /ydb /opt/ydb/bin/ydb
80- COPY --link --from=ydbd-setcap /ydbd /opt/ydb/bin/ydbd
81-
82- ENV BREAKPAD_MINIDUMPS_PATH=/opt/ydb/volumes/coredumps/
83- ENV BREAKPAD_MINIDUMPS_SCRIPT=/opt/ydb/bin/minidump_script.py
84- ENV LD_PRELOAD=libbreakpad_init.so
85- COPY --chmod=4644 --link --from=breakpad /usr/lib/libbreakpad_init.so /usr/lib/libbreakpad_init.so
86- COPY --chmod=0755 --link --from=breakpad /usr/bin/minidump-2-core /usr/bin/minidump-2-core
87- COPY --chmod=0755 --chown=ydb /minidump_script.py /opt/ydb/bin/minidump_script.py
115+ COPY --link --from=ydb-binary /opt/ydb/bin/ydb /opt/ydb/bin/ydb
116+ COPY --link --from=ydbd-setcap /opt/ydb/bin/ydbd /opt/ydb/bin/ydbd
117+ # debug symbols
88118COPY --chmod=0644 --chown=ydb /ydbd.debug /opt/ydb/bin/ydbd.debug
119+
120+ WORKDIR /opt/ydb/bin
121+ USER ydb
0 commit comments