docker

Форк
0
/
alpine_3.15 
251 строка · 8.5 Кб
1
FROM alpine:3.15
2
LABEL org.opencontainers.image.authors="artembo@me.com; piligrim@rootnix.net"
3

4
RUN addgroup -S tarantool \
5
    && adduser -S -G tarantool tarantool \
6
    && apk add --no-cache 'su-exec>=0.2'
7

8
# An ARG instruction goes out of scope at the end of the build
9
# stage where it was defined. To use an arg in multiple stages,
10
# each stage must include the ARG instruction
11
ARG TNT_VER
12
ARG NPROC
13
ENV TARANTOOL_VERSION=${TNT_VER} \
14
    TARANTOOL_DOWNLOAD_URL=https://github.com/tarantool/tarantool.git \
15
    TARANTOOL_INSTALL_LUADIR=/usr/local/share/tarantool \
16
    GPERFTOOLS_REPO=https://github.com/gperftools/gperftools.git \
17
    GPERFTOOLS_TAG=gperftools-2.10 \
18
    LUAROCKS_URL=https://github.com/tarantool/luarocks/archive/6e6fe62d9409fe2103c0fd091cccb3da0451faf5.tar.gz \
19
    LUAROCK_VSHARD_VERSION=0.1.26 \
20
    LUAROCK_AVRO_SCHEMA_VERSION=3.1.0 \
21
    LUAROCK_EXPERATIOND_VERSION=1.6.0 \
22
    LUAROCK_QUEUE_VERSION=1.3.3 \
23
    LUAROCK_CONNPOOL_VERSION=1.1.1 \
24
    LUAROCK_HTTP_VERSION=1.5.0 \
25
    LUAROCK_MEMCACHED_VERSION=1.1.1 \
26
    LUAROCK_METRICS_VERSION=1.0.0 \
27
    LUAROCK_TARANTOOL_PG_VERSION=2.0.2 \
28
    LUAROCK_TARANTOOL_MYSQL_VERSION=2.1.3 \
29
    LUAROCK_TARANTOOL_MQTT_VERSION=1.5.1 \
30
    LUAROCK_TARANTOOL_GIS_VERSION=1.0.1 \
31
    LUAROCK_TARANTOOL_GPERFTOOLS_VERSION=1.0.1
32

33
COPY files/gperftools_alpine.diff /
34

35
ARG ENABLE_BUNDLED_LIBYAML \
36
    LUAJIT_DISABLE_SYSPROF \
37
    GC64
38

39
RUN set -x \
40
    && apk add --no-cache --virtual .run-deps.1 \
41
        libstdc++ \
42
        readline \
43
        openssl \
44
        yaml \
45
        lz4 \
46
        binutils \
47
        ncurses \
48
        libgomp \
49
        lua \
50
        tar \
51
        zip \
52
        zlib \
53
        libunwind \
54
        icu \
55
        ca-certificates \
56
        libexecinfo-dev \
57
    && apk add --no-cache --virtual .build-deps.1 \
58
        gcc \
59
        g++ \
60
        cmake \
61
        file \
62
        readline-dev \
63
        openssl-dev \
64
        yaml-dev \
65
        bsd-compat-headers \
66
        lz4-dev \
67
        zlib-dev \
68
        binutils-dev \
69
        ncurses-dev \
70
        lua-dev \
71
        musl-dev \
72
        make \
73
        git \
74
        libunwind-dev \
75
        autoconf \
76
        automake \
77
        libtool \
78
        linux-headers \
79
        go \
80
        icu-dev \
81
        wget \
82
    && : "---------- gperftools ----------" \
83
    && mkdir -p /usr/src/gperftools \
84
    && git clone "$GPERFTOOLS_REPO" /usr/src/gperftools \
85
    && git -C /usr/src/gperftools checkout "$GPERFTOOLS_TAG" \
86
    && (cd /usr/src/gperftools; \
87
        ./autogen.sh; \
88
        ./configure --disable-libunwind --enable-frame-pointers; \
89
        make -j ${NPROC}; \
90
        cp .libs/libprofiler.so* /usr/local/lib/) \
91
    && : "---------- pprof for gperftools ----------" \
92
    && : "To avoid of the issue:" \
93
    && : "'The master branch is Incompatible with go version < 1.13 #538'" \
94
    && : "https://github.com/google/pprof/issues/538" \
95
    && : "use latest workable commits with the old GO versions" \
96
    && ( export GOPATH=/root/go && \
97
       export PATH=${GOPATH}/bin:/usr/local/go/bin:$PATH && \
98
       export GOBIN=$GOROOT/bin && \
99
       mkdir -p ${GOPATH}/src ${GOPATH}/bin && \
100
       go install github.com/google/pprof@latest ) \
101
    && : "---------- tarantool ----------" \
102
    && mkdir -p /usr/src/tarantool \
103
    && git clone "$TARANTOOL_DOWNLOAD_URL" /usr/src/tarantool \
104
    && git -C /usr/src/tarantool checkout "$TARANTOOL_VERSION" \
105
    && git -C /usr/src/tarantool submodule update --init --recursive \
106
    && (cd /usr/src/tarantool; \
107
       echo "WARNING: Temporary fix for test/unit/cbus_hang test" ; \
108
       git cherry-pick d7fa6d34ab4e0956fe8a80966ba628e0e3f81067 2>/dev/null || \
109
           git cherry-pick --abort ; \
110
       cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo\
111
             -DENABLE_BUNDLED_LIBYAML:BOOL=${ENABLE_BUNDLED_LIBYAML}\
112
             -DENABLE_BACKTRACE:BOOL=ON\
113
             -DLUAJIT_DISABLE_SYSPROF:BOOL=${LUAJIT_DISABLE_SYSPROF} \
114
             -DLUAJIT_ENABLE_GC64:BOOL=${GC64} \
115
             -DENABLE_DIST:BOOL=ON\
116
             .) \
117
    && make -C /usr/src/tarantool -j ${NPROC} \
118
    && make -C /usr/src/tarantool install \
119
    && make -C /usr/src/tarantool clean \
120
    && : "---------- luarocks ----------" \
121
    && wget -O luarocks.tar.gz "$LUAROCKS_URL" \
122
    && mkdir -p /usr/src/luarocks \
123
    && tar -xzf luarocks.tar.gz -C /usr/src/luarocks --strip-components=1 \
124
    && (cd /usr/src/luarocks; \
125
        ./configure; \
126
        make -j ${NPROC} build; \
127
        make install) \
128
    && rm -r /usr/src/luarocks \
129
    && rm -rf /usr/src/tarantool \
130
    && rm -rf /usr/src/gperftools \
131
    && rm -rf /usr/src/go \
132
    && : "---------- remove build deps ----------" \
133
    && apk del .build-deps.1
134

135
RUN mkdir -p /usr/local/etc/luarocks \
136
    && mkdir -p /usr/local/etc/tarantool/rocks
137

138
COPY files/luarocks-config.lua /usr/local/etc/luarocks/config-5.1.lua
139
COPY files/luarocks-config.lua /usr/local/etc/tarantool/rocks/config-5.1.lua
140

141
ARG ROCKS_INSTALLER
142
RUN set -x \
143
    && apk add --no-cache --virtual .run-deps.2 \
144
        mariadb-connector-c-dev \
145
        libpq \
146
        cyrus-sasl \
147
        libev \
148
    && apk add --no-cache --virtual .build-deps.2 \
149
        git \
150
        cmake \
151
        make \
152
        coreutils \
153
        gcc \
154
        g++ \
155
        postgresql-dev \
156
        lua-dev \
157
        musl-dev \
158
        cyrus-sasl-dev \
159
        libev-dev \
160
        libucontext \
161
        libucontext-dev \
162
        libressl-dev \
163
        wget \
164
        unzip \
165
    && mkdir -p /.rocks \
166
    && : "---------- proj (for gis module) ----------" \
167
    && wget -O proj.tar.gz http://download.osgeo.org/proj/proj-4.9.3.tar.gz \
168
    && mkdir -p /usr/src/proj \
169
    && tar -xzf proj.tar.gz -C /usr/src/proj --strip-components=1 \
170
    && (cd /usr/src/proj; \
171
        ./configure; \
172
        make -j ${NPROC}; \
173
        make install) \
174
    && rm -r /usr/src/proj \
175
    && rm -rf /usr/src/proj \
176
    && rm -rf /proj.tar.gz \
177
    && : "---------- geos (for gis module) ----------" \
178
    && wget -O geos.tar.bz2 http://download.osgeo.org/geos/geos-3.6.0.tar.bz2 \
179
    && mkdir -p /usr/src/geos \
180
    && tar -xjf geos.tar.bz2 -C /usr/src/geos --strip-components=1 \
181
    && (cd /usr/src/geos; \
182
        ./configure; \
183
        make -j ${NPROC}; \
184
        make install) \
185
    && rm -r /usr/src/geos \
186
    && rm -rf /usr/src/geos \
187
    && rm -rf /geos.tar.bz2 \
188
    && : "---------- luarocks ----------" \
189
    && : "ldoc" \
190
    && ${ROCKS_INSTALLER} install ldoc \
191
    && : "lua-term" \
192
    && ${ROCKS_INSTALLER} install lua-term \
193
    && : "avro" \
194
    && ${ROCKS_INSTALLER} install avro-schema $LUAROCK_AVRO_SCHEMA_VERSION \
195
    && : "expirationd" \
196
    && ${ROCKS_INSTALLER} install expirationd $LUAROCK_EXPERATIOND_VERSION \
197
    && : "queue" \
198
    && ${ROCKS_INSTALLER} install queue $LUAROCK_QUEUE_VERSION \
199
    && : "connpool" \
200
    && ${ROCKS_INSTALLER} install connpool $LUAROCK_CONNPOOL_VERSION \
201
    && : "vshard" \
202
    && ${ROCKS_INSTALLER} install vshard $LUAROCK_VSHARD_VERSION \
203
    && : "http" \
204
    && ${ROCKS_INSTALLER} install http $LUAROCK_HTTP_VERSION \
205
    && : "pg" \
206
    && ${ROCKS_INSTALLER} install pg $LUAROCK_TARANTOOL_PG_VERSION \
207
    && : "mysql" \
208
    && ${ROCKS_INSTALLER} install mysql $LUAROCK_TARANTOOL_MYSQL_VERSION \
209
    && : "memcached" \
210
    && ${ROCKS_INSTALLER} install memcached $LUAROCK_MEMCACHED_VERSION \
211
    && : "metrics" \
212
    && ${ROCKS_INSTALLER} install metrics $LUAROCK_METRICS_VERSION \
213
    && : "mqtt" \
214
    && ${ROCKS_INSTALLER} install mqtt $LUAROCK_TARANTOOL_MQTT_VERSION \
215
    && : "gis" \
216
    && ${ROCKS_INSTALLER} install gis $LUAROCK_TARANTOOL_GIS_VERSION \
217
    && : "gperftools" \
218
    && ${ROCKS_INSTALLER} install gperftools $LUAROCK_TARANTOOL_GPERFTOOLS_VERSION \
219
    && : "---------- remove build deps ----------" \
220
    && apk del .build-deps.2
221

222
# gh-170: needed for luarocks and etc
223
RUN apk update \
224
    && apk add wget curl git libucontext tzdata
225

226
RUN mkdir -p /var/lib/tarantool \
227
    && chown tarantool:tarantool /var/lib/tarantool \
228
    && mkdir -p /opt/tarantool \
229
    && chown tarantool:tarantool /opt/tarantool \
230
    && mkdir -p /var/run/tarantool \
231
    && chown tarantool:tarantool /var/run/tarantool \
232
    && mkdir /etc/tarantool \
233
    && chown tarantool:tarantool /etc/tarantool
234

235
VOLUME /var/lib/tarantool
236
WORKDIR /opt/tarantool
237

238
COPY files/tarantool-entrypoint.lua /usr/local/bin/
239
COPY files/tarantool_set_config.lua /usr/local/bin/
240
COPY files/docker-entrypoint.sh /usr/local/bin/
241
COPY files/console /usr/local/bin/
242
COPY files/tarantool_is_up /usr/local/bin/
243
COPY files/tarantool.default /usr/local/etc/default/tarantool
244

245
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
246
ENTRYPOINT ["docker-entrypoint.sh"]
247

248
HEALTHCHECK CMD tarantool_is_up
249

250
EXPOSE 3301
251
CMD [ "tarantool" ]
252

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.