├── .github.mk ├── .gitignore ├── README.md ├── dockerfiles ├── alpine_3.15 ├── alpine_3.5 ├── alpine_3.9 ├── centos_7 └── ubuntu_20.04 ├── files ├── console ├── docker-entrypoint.sh ├── docker-entrypoint_centos.sh ├── gperftools_alpine.diff ├── luarocks-config.lua ├── luarocks-config_centos.lua ├── mosquitto.repo ├── tarantool-entrypoint.lua ├── tarantool.default ├── tarantool_is_up ├── tarantool_set_config.lua └── test-rocks.lua └── versions ├── 1 ├── alpine_3.15_1.10.14 ├── alpine_3.15_1.10.15 ├── alpine_3.15_1.x ├── alpine_3.5_1.10.0 ├── alpine_3.5_1.10.1 ├── alpine_3.5_1.10.2 ├── alpine_3.5_1.10.3 ├── alpine_3.9_1.10.10 ├── alpine_3.9_1.10.11 ├── alpine_3.9_1.10.12 ├── alpine_3.9_1.10.13 ├── alpine_3.9_1.10.4 ├── alpine_3.9_1.10.5 ├── alpine_3.9_1.10.6 ├── alpine_3.9_1.10.7 ├── alpine_3.9_1.10.8 ├── alpine_3.9_1.10.9 └── centos_7_1.x └── 2 ├── alpine_3.15_2.10.0 ├── alpine_3.15_2.10.2 ├── alpine_3.15_2.10.3 ├── alpine_3.15_2.10.4 ├── alpine_3.15_2.10.5 ├── alpine_3.15_2.10.6 ├── alpine_3.15_2.10.7 ├── alpine_3.15_2.10.8 ├── alpine_3.15_2.11.0 ├── alpine_3.15_2.11.0-rc1 ├── alpine_3.15_2.11.0-rc2 ├── alpine_3.15_2.11.1 ├── alpine_3.15_2.11.2 ├── alpine_3.15_2.11.3 ├── alpine_3.15_2.11.4 ├── alpine_3.15_2.x ├── alpine_3.5_2.1.0 ├── alpine_3.5_2.1.1 ├── alpine_3.5_2.1.2 ├── alpine_3.5_2.2.0 ├── alpine_3.5_2.2.1 ├── alpine_3.5_2.3.0 ├── alpine_3.9_2.1 ├── alpine_3.9_2.1.3 ├── alpine_3.9_2.10.0-beta1 ├── alpine_3.9_2.10.0-beta2 ├── alpine_3.9_2.10.0-rc1 ├── alpine_3.9_2.2 ├── alpine_3.9_2.2.2 ├── alpine_3.9_2.2.3 ├── alpine_3.9_2.3 ├── alpine_3.9_2.3.1 ├── alpine_3.9_2.3.2 ├── alpine_3.9_2.3.3 ├── alpine_3.9_2.4 ├── alpine_3.9_2.4.0 ├── alpine_3.9_2.4.1 ├── alpine_3.9_2.4.2 ├── alpine_3.9_2.4.3 ├── alpine_3.9_2.5 ├── alpine_3.9_2.5.0 ├── alpine_3.9_2.5.1 ├── alpine_3.9_2.5.2 ├── alpine_3.9_2.5.3 ├── alpine_3.9_2.6 ├── alpine_3.9_2.6.0 ├── alpine_3.9_2.6.1 ├── alpine_3.9_2.6.2 ├── alpine_3.9_2.6.3 ├── alpine_3.9_2.7 ├── alpine_3.9_2.7.0 ├── alpine_3.9_2.7.1 ├── alpine_3.9_2.7.2 ├── alpine_3.9_2.7.3 ├── alpine_3.9_2.8 ├── alpine_3.9_2.8.0 ├── alpine_3.9_2.8.1 ├── alpine_3.9_2.8.2 ├── alpine_3.9_2.8.3 ├── alpine_3.9_2.8.4 ├── alpine_3.9_2.9.0 ├── centos_7_2.10.0 ├── centos_7_2.10.2 ├── centos_7_2.10.3 ├── centos_7_2.10.4 ├── centos_7_2.10.5 ├── centos_7_2.10.6 ├── centos_7_2.10.7 ├── centos_7_2.10.8 ├── centos_7_2.11.0 ├── centos_7_2.11.0-rc1 ├── centos_7_2.11.0-rc2 ├── centos_7_2.11.1 ├── centos_7_2.11.2 ├── centos_7_2.11.3 ├── centos_7_2.11.4 ├── centos_7_2.x ├── ubuntu_20.04_2.10.0 ├── ubuntu_20.04_2.10.2 ├── ubuntu_20.04_2.10.3 ├── ubuntu_20.04_2.10.4 ├── ubuntu_20.04_2.10.5 ├── ubuntu_20.04_2.10.6 ├── ubuntu_20.04_2.10.7 ├── ubuntu_20.04_2.10.8 ├── ubuntu_20.04_2.11.0 ├── ubuntu_20.04_2.11.0-rc1 ├── ubuntu_20.04_2.11.0-rc2 ├── ubuntu_20.04_2.11.1 ├── ubuntu_20.04_2.11.2 ├── ubuntu_20.04_2.11.3 └── ubuntu_20.04_2.11.4 /.github.mk: -------------------------------------------------------------------------------- 1 | SHELL := /bin/bash 2 | TNT_VER=$(shell cat versions/$${VER:0:1}/${OS}_${DIST}_${VER}) 3 | ROCKS_INSTALLER?='tarantoolctl rocks' 4 | ENABLE_BUNDLED_LIBYAML?='ON' 5 | IMAGE?=tarantool/tarantool 6 | LUAJIT_DISABLE_SYSPROF?=OFF 7 | GC64?=OFF 8 | NPROC?=4 9 | 10 | build: 11 | [ "${TNT_VER}" != "" ] || (echo "ERROR: TNT_VER not defined" ; exit 1) 12 | docker build --no-cache --network=host \ 13 | --build-arg ROCKS_INSTALLER=${ROCKS_INSTALLER} \ 14 | --build-arg ENABLE_BUNDLED_LIBYAML=${ENABLE_BUNDLED_LIBYAML} \ 15 | --build-arg TNT_VER=${TNT_VER} \ 16 | --build-arg LUAJIT_DISABLE_SYSPROF=${LUAJIT_DISABLE_SYSPROF} \ 17 | --build-arg GC64=${GC64} \ 18 | --build-arg NPROC=${NPROC} \ 19 | --progress=plain \ 20 | -t ${IMAGE}:${TAG} -f dockerfiles/${OS}_${DIST} . 21 | docker run --rm --name tarantool_${TAG} -p ${PORT}:${PORT} -d ${IMAGE}:${TAG} 22 | docker exec -t tarantool_${TAG} tarantool_is_up 23 | docker stop tarantool_${TAG} 24 | if [ -n "${GITHUB_CI}" ] ; then \ 25 | docker push ${IMAGE}:${TAG} ; \ 26 | if [ -n "${TAG_LATEST}" ] ; then \ 27 | docker tag ${IMAGE}:${TAG} ${IMAGE}:${TAG_LATEST} ; \ 28 | docker push ${IMAGE}:${TAG_LATEST} ; \ 29 | fi ; \ 30 | fi 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tarantool Docker images 2 | 3 | 4 | 5 | 6 | - [What is Tarantool](#what-is-tarantool) 7 | - [Quick start](#quickstart) 8 | - [What's on board](#whats-on-board) 9 | - [Included modules](#included-modules) 10 | - [Data directories](#data-directories) 11 | - [Convenience tools](#convenience-tools) 12 | - [Versions, tags, and release policy](#versions-tags-and-release-policy) 13 | - [How to use these images](#how-to-use-these-images) 14 | - [Start a Tarantool instance](#start-a-tarantool-instance) 15 | - [Start a secure Tarantool instance](#start-a-secure-tarantool-instance) 16 | - [Connect to a running Tarantool instance](#connect-to-a-running-tarantool-instance) 17 | - [Start a master-master replica set](#start-a-master-master-replica-set) 18 | - [Add application code with a volume mount](#add-application-code-with-a-volume-mount) 19 | - [Build your own images](#build-your-own-images) 20 | - [Environment variables](#environment-variables) 21 | - [`TARANTOOL_USER_NAME`](#tarantool_user_name) 22 | - [`TARANTOOL_USER_PASSWORD`](#tarantool_user_password) 23 | - [`TARANTOOL_PORT`](#tarantool_port) 24 | - [`TARANTOOL_PROMETHEUS_DEFAULT_METRICS_PORT`](#tarantool_prometheus_default_metrics_port) 25 | - [`TARANTOOL_REPLICATION`](#tarantool_replication) 26 | - [`TARANTOOL_MEMTX_MEMORY`](#tarantool_memtx_memory) 27 | - [`TARANTOOL_SLAB_ALLOC_FACTOR`](#tarantool_slab_alloc_factor) 28 | - [`TARANTOOL_MEMTX_MAX_TUPLE_SIZE`](#tarantool_memtx_max_tuple_size) 29 | - [`TARANTOOL_MEMTX_MIN_TUPLE_SIZE`](#tarantool_memtx_min_tuple_size) 30 | - [`TARANTOOL_CHECKPOINT_INTERVAL`](#tarantool_checkpoint_interval) 31 | - [`TARANTOOL_FORCE_RECOVERY`](#tarantool_force_recovery) 32 | - [`TARANTOOL_LOG_FORMAT`](#tarantool_log_format) 33 | - [`TARANTOOL_LOG_LEVEL`](#tarantool_log_level) 34 | - [Reporting problems and getting help](#reporting-problems-and-getting-help) 35 | - [Contributing](#contributing) 36 | - [How to contribute](#how-to-contribute) 37 | - [How to check](#how-to-check) 38 | - [Build pipelines](#build-pipelines) 39 | - [Release policy](#release-policy) 40 | - [Exceptional cases](#exceptional-cases) 41 | - [How to build and push an image](#how-to-build-and-push-an-image) 42 | 43 | 44 | 45 | ## What is Tarantool 46 | 47 | Tarantool is an in-memory computing platform that combines 48 | a Lua application server and a database management system. 49 | Read more about Tarantool at [tarantool.io](https://www.tarantool.io/en/developers/). 50 | 51 | ## Quick start 52 | 53 | To try out Tarantool, run this command: 54 | 55 | ```console 56 | $ docker run --rm -t -i tarantool/tarantool 57 | ``` 58 | 59 | It will create a one-off Tarantool instance and open an interactive 60 | console. 61 | From there, you can either type `tutorial()` in the console or follow the 62 | [documentation](https://www.tarantool.io/en/doc/latest/getting_started/getting_started_db/#using-a-docker-image). 63 | 64 | ## What's on board 65 | 66 | The `tarantool/tarantool` images contain the Tarantool executable 67 | and a combination of [Lua modules](#included-modules) and utilities often used in production. 68 | Designed as a building block for modern services, these modules and utilities are based on a few 69 | design choices that set them apart from the systemd-controlled Tarantool. 70 | We check all these extensions for compatibility with the Tarantool version included in the image. 71 | 72 | The Docker images come in three flavors, based on three different images: `alpine:3.15`, `centos:7` 73 | and `ubuntu:20.04`. Check them out: 74 | 75 | ```console 76 | $ docker run --rm -t -i tarantool/tarantool:2.10.0 77 | $ docker run --rm -t -i tarantool/tarantool:2.10.0-centos7 78 | $ docker run --rm -t -i tarantool/tarantool:2.10.0-ubuntu 79 | ``` 80 | 81 | The entrypoint script in each of these images uses 82 | [environment variables](#environment-variables) 83 | to set various configuration options, 84 | such as replication sources, memory limits, and so on. 85 | If specified, the environment variables override the settings provided in your code. 86 | This way, you can set options using `docker compose` or 87 | other orchestration and deployment tools. 88 | 89 | There are also a few [convenience tools](#convenience-tools) that make use of the fact that there 90 | is only one Tarantool instance running in the container. 91 | 92 | ### Included modules 93 | 94 | The following Lua modules are included in the build: 95 | 96 | - [avro-schema](https://github.com/tarantool/avro-schema): Apache Avro scheme for your data. 97 | - [connpool](https://github.com/tarantool/connpool): Keep a pool of connections to other Tarantool instances. 98 | - [curl](https://github.com/tarantool/curl): HTTP client based on libcurl. 99 | - [expirationd](https://github.com/tarantool/expirationd): Automatically delete tuples based on expiration time. 100 | - [gis](https://github.com/tarantool/gis): Store and query geospatial data. 101 | - [gperftools](https://github.com/tarantool/gperftools): Collect a CPU profile to find bottlenecks in your code. 102 | - [http](https://github.com/tarantool/http): Embedded HTTP server with Flask-style routing support. 103 | - [memcached](https://github.com/tarantool/memcached): Access Tarantool as if it was a memcached instance. 104 | - [metrics](https://github.com/tarantool/metrics): Metric collection library for Tarantool. 105 | - [mqtt](https://github.com/tarantool/mqtt): Client for MQTT message brokers. 106 | - [mysql](https://github.com/tarantool/mysql): Query MySQL right from Tarantool. 107 | - [pg](https://github.com/tarantool/pg): Query PostgreSQL right from Tarantool. 108 | - [prometheus](https://github.com/tarantool/prometheus): Instrument code and export metrics to Prometheus monitoring. 109 | - [queue](https://github.com/tarantool/queue): Priority queues with TTL and confirmations. 110 | - [vshard](https://github.com/tarantool/vshard): Automatically distribute data across multiple instances. 111 | 112 | 113 | If the module you need is not listed here, there is a good chance we can add it. 114 | Open an issue [on our GitHub](https://github.com/tarantool/docker). 115 | 116 | ### Data directories 117 | 118 | Mount these directories as volumes: 119 | 120 | - `/var/lib/tarantool` contains operational data 121 | (snapshots, xlogs and vinyl runs). 122 | 123 | - `/opt/tarantool` is the directory for Lua application code. 124 | 125 | ### Convenience tools 126 | 127 | - `console`: Execute without arguments to open an administrative 128 | console to a running Tarantool instance. 129 | 130 | - `tarantool_is_up`: Returns `0` if Tarantool has been initialized and 131 | is operating normally. 132 | 133 | - `tarantool_set_config.lua`: Allows you to dynamically change certain 134 | settings without the need to recreate containers. 135 | 136 | ## Versions, tags, and release policy 137 | 138 | The images are built and published on Docker Hub 139 | for each Tarantool release as well as for some beta 140 | and release candidate versions. 141 | 142 | There are three variants built from different base images: 143 | 144 | * Alpine 3.15, the "default" build with tags having no mention of base image, like `latest`, `1`, `2`, `1.10`,`1.10.z`, `2.y`, `2.y.z` and others. 145 | * CentOS 7 with tags like `1-centos7`, `2-centos7`, and so on. 146 | * Ubuntu 20.04 with tags like `1-ubuntu22.04`, `2-ubuntu22.04`, and so on. 147 | 148 | ## How to use these images 149 | 150 | ### Start a Tarantool instance 151 | 152 | ```console 153 | $ docker run \ 154 | --name mytarantool \ 155 | -p 3301:3301 -d \ 156 | tarantool/tarantool 157 | ``` 158 | 159 | This will start an instance of Tarantool and expose it on 160 | port 3301. Note that by default there is no password protection, 161 | so don't expose this instance to the outside world. 162 | 163 | In this case, as there is no Lua code provided, the entrypoint 164 | script initializes the database using a reasonable set of defaults. Some of them 165 | can be tweaked with environment variables (see below). 166 | 167 | ### Start a secure Tarantool instance 168 | 169 | ```console 170 | $ docker run \ 171 | --name mytarantool \ 172 | -p 3301:3301 \ 173 | -e TARANTOOL_USER_NAME=myusername \ 174 | -e TARANTOOL_USER_PASSWORD=mysecretpassword -d \ 175 | tarantool/tarantool 176 | ``` 177 | 178 | This starts an instance of Tarantool, disables guest login, and 179 | creates a user named `myusername` with admin privileges and the password 180 | `mysecretpassword`. 181 | 182 | As in the previous example, the database is initialized automatically. 183 | 184 | ### Connect to a running Tarantool instance 185 | 186 | ```console 187 | $ docker exec -t -i mytarantool console 188 | ``` 189 | 190 | This will open an interactive admin console on the running instance 191 | named `mytarantool`. You can safely detach from it anytime, the server 192 | will continue running. 193 | 194 | This `console` doesn't require authentication, because it uses a local 195 | Unix socket in the container to connect to Tarantool. However, it requires 196 | you to have direct access to the container. 197 | 198 | If you need to access a remote console via TCP/IP, use the `tt` utility 199 | as explained [here](https://www.tarantool.io/en/doc/latest/reference/tooling/tt_cli/). 200 | 201 | ### Start a master-master replica set 202 | 203 | You can start a replica set with Docker alone, but it's more 204 | convenient to use [docker-compose](https://docs.docker.com/compose/). 205 | Here's a simplified `docker-compose.yml` for starting a master-master 206 | replica set: 207 | 208 | ``` yaml 209 | version: '2' 210 | 211 | services: 212 | tarantool1: 213 | image: tarantool/tarantool:latest 214 | environment: 215 | TARANTOOL_REPLICATION: "tarantool1,tarantool2" 216 | networks: 217 | - mynet 218 | ports: 219 | - "3301:3301" 220 | 221 | tarantool2: 222 | image: tarantool/tarantool:latest 223 | environment: 224 | TARANTOOL_REPLICATION: "tarantool1,tarantool2" 225 | networks: 226 | - mynet 227 | ports: 228 | - "3302:3301" 229 | 230 | networks: 231 | mynet: 232 | driver: bridge 233 | ``` 234 | 235 | Start it like this: 236 | 237 | ``` console 238 | $ docker compose up 239 | ``` 240 | 241 | ### Add application code with a volume mount 242 | 243 | The simplest way to provide application code is to mount your code 244 | directory to `/opt/tarantool`: 245 | 246 | ```console 247 | $ docker run \ 248 | --name mytarantool \ 249 | -p 3301:3301 -d \ 250 | -v /path/to/my/app:/opt/tarantool \ 251 | tarantool/tarantool \ 252 | tarantool /opt/tarantool/app.lua 253 | ``` 254 | 255 | Here, `/path/to/my/app` is the host directory containing Lua code 256 | and `app.lua` is the entry point of your application. 257 | Note that for your code to run, you must execute the main script explicitly, 258 | which is done in the last line. 259 | 260 | ### Build your own images 261 | 262 | To pack and distribute an image with your code, 263 | create your own `Dockerfile`: 264 | 265 | ```dockerfile 266 | FROM tarantool/tarantool:2.10.0 267 | COPY app.lua /opt/tarantool 268 | CMD ["tarantool", "/opt/tarantool/app.lua"] 269 | ``` 270 | 271 | Then build it with: 272 | 273 | ```console 274 | $ docker build -t company/appname:tag . 275 | ``` 276 | 277 | Please pay attention to the format of `CMD`. Unless it is specified in 278 | square brackets, the `wrapper` entrypoint that our Docker image 279 | provides will not be called. In this case, you will not be able to configure 280 | your instance using environment variables. 281 | 282 | We recommend building from an image with a precise tag, 283 | that is, `2.10.0` or `2.10.0-centos7`, not 284 | `2.10` or `latest`. 285 | This way you will have more control over the updates of 286 | Tarantool and other dependencies of your application. 287 | 288 | ## Environment variables 289 | 290 | When you run this image, you can adjust some of Tarantool settings. 291 | Most of them either control memory/disk limits or specify external 292 | connectivity parameters. 293 | 294 | If you need to fine-tune specific settings not described here, you can 295 | always inherit this container and call `box.cfg{}` yourself. 296 | See the 297 | [documentation on `box.cfg`](https://www.tarantool.io/en/doc/latest/reference/configuration/#box-cfg-params) for 298 | details. 299 | 300 | ### `TARANTOOL_USER_NAME` 301 | 302 | Setting this variable allows you to pick the name of the user that is 303 | utilized for remote connections. By default, it is `guest`. Please 304 | note that since the `guest` user in Tarantool can't have a password, it is 305 | highly recommended that you change it. 306 | 307 | ### `TARANTOOL_USER_PASSWORD` 308 | 309 | For security reasons, it is recommended that you never leave this 310 | variable unset. This environment variable sets the user's password for 311 | Tarantool. In the above example, it is set to `mysecretpassword`. 312 | 313 | ### `TARANTOOL_PORT` 314 | 315 | Optional. Specifying this variable will tell Tarantool to listen for 316 | incoming connections on a specific port. Default is `3301`. 317 | 318 | ### `TARANTOOL_PROMETHEUS_DEFAULT_METRICS_PORT` 319 | 320 | Optional. If specified, Tarantool will start an HTTP server on the provided port 321 | and expose the Prometheus `metrics` endpoint with common metrics 322 | (fibers, memory, network, replication, etc.). 323 | 324 | ### `TARANTOOL_REPLICATION` 325 | 326 | Optional. Comma-separated list of URIs to treat as replication 327 | sources. Upon start, Tarantool will attempt to connect to 328 | those instances, fetch the data snapshot, and start replicating 329 | transaction logs. In other words, it will become a slave. For a 330 | multi-master configuration, other participating instances of 331 | Tarantool should be started with the same `TARANTOOL_REPLICATION`. 332 | (NB: Applicable only to versions later than 1.7.) 333 | 334 | Example: 335 | 336 | `user1:pass@host1:3301,user2:pass@host2:3301` 337 | 338 | ### `TARANTOOL_MEMTX_MEMORY` 339 | 340 | Optional. Specifies how much memory Tarantool allocates to 341 | actually store tuples, in bytes. When the limit is reached, `INSERT` 342 | or `UPDATE` requests begin failing. Default is `268435456` (256 343 | megabytes). 344 | 345 | ### `TARANTOOL_SLAB_ALLOC_FACTOR` 346 | 347 | Optional. Used as the multiplier for computing the sizes of memory 348 | chunks that tuples are stored in. A lower value may result in less 349 | wasted memory, depending on the total amount of memory available 350 | and the distribution of item sizes. Default is `1.05`. 351 | 352 | ### `TARANTOOL_MEMTX_MAX_TUPLE_SIZE` 353 | 354 | Optional. Size of the largest allocation unit in bytes. It can be 355 | increased if it is necessary to store large tuples. Default is 356 | `1048576`. 357 | 358 | ### `TARANTOOL_MEMTX_MIN_TUPLE_SIZE` 359 | 360 | Optional. Size of the smallest allocation unit, in bytes. It can be 361 | decreased if most of the tuples are very small. Default is `16`. 362 | 363 | ### `TARANTOOL_CHECKPOINT_INTERVAL` 364 | 365 | Optional. Specifies how often snapshots are made, in seconds. 366 | Default is `3600` (every 1 hour). 367 | 368 | ### `TARANTOOL_FORCE_RECOVERY` 369 | 370 | Optional. When set to `true`, Tarantool tries to continue if there is an error while 371 | reading a snapshot file or a write-ahead log file. 372 | Skips invalid records, reads as much data as possible, 373 | print a warning in console and start the database. 374 | 375 | ### `TARANTOOL_LOG_FORMAT` 376 | 377 | Optional. There are two possible log formats: 378 | 379 | * 'plain' — the default one. 380 | * 'json' — with more details and with JSON labels. 381 | 382 | More details can be found in the 383 | [log module reference](https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-log_format). 384 | 385 | ### `TARANTOOL_LOG_LEVEL` 386 | 387 | Optional. Default value is 5 (that means INFO). 388 | More details can be found in 389 | [log level configuration](https://www.tarantool.io/en/doc/latest/reference/configuration/#cfg-logging-log-level). 390 | 391 | ## Contributing 392 | 393 | ### Reporting problems and getting help 394 | 395 | You can report problems and request 396 | features [on our GitHub](https://github.com/tarantool/docker). 397 | 398 | Alternatively, you may get help on our [Telegram channel](https://t.me/tarantool). 399 | 400 | ### How to contribute 401 | 402 | Open a pull request to the `master` branch. 403 | A maintainer is responsible for merging the PR. 404 | 405 | ### How to check 406 | 407 | Say, we have updated 'dockerfiles/alpine_3.9' and want to check it: 408 | 409 | ```sh 410 | $ TAG=2 OS=alpine DIST=3.9 VER=2.x PORT=5200 make -f .github.mk build 411 | $ docker run -it tarantool/tarantool:2 412 | ...perform a test... 413 | ``` 414 | 415 | ### Build pipelines 416 | 417 | Fixed release versions: 418 | 419 | | Docker tag | FROM | Dockerfile | 420 | |--------------------|--------------|-------------------------| 421 | | 2.10.0 | alpine:3.15 | dockerfile/alpine_3.15 | 422 | | 2.10.0-centos7 | centos:7 | dockerfile/centos_7 | 423 | | 2.10.0-ubuntu20.04 | ubuntu:20.04 | dockerfile/ubuntu_20.04 | 424 | | 2.10.0-rc1 | alpine:3.9 | dockerfile/alpine_3.9 | 425 | | 2.10.0-beta2 | alpine:3.9 | dockerfile/alpine_3.9 | 426 | | 2.10.0-beta1 | alpine:3.9 | dockerfile/alpine_3.9 | 427 | | 2.8.0 .. 2.8.4 | alpine:3.9 | dockerfile/alpine_3.9 | 428 | | 2.7.0 .. 2.7.3 | alpine:3.9 | dockerfile/alpine_3.9 | 429 | | 2.6.0 .. 2.6.3 | alpine:3.9 | dockerfile/alpine_3.9 | 430 | | 2.5.0 .. 2.5.3 | alpine:3.9 | dockerfile/alpine_3.9 | 431 | | 2.4.0 .. 2.4.3 | alpine:3.9 | dockerfile/alpine_3.9 | 432 | | 2.3.1 .. 2.3.3 | alpine:3.9 | dockerfile/alpine_3.9 | 433 | | 2.3.0 | alpine:3.5 | dockerfile/alpine_3.5 | 434 | | 2.2.2 .. 2.2.3 | alpine:3.9 | dockerfile/alpine_3.9 | 435 | | 2.2.0 .. 2.2.1 | alpine:3.5 | dockerfile/alpine_3.5 | 436 | | 2.1.3 | alpine:3.9 | dockerfile/alpine_3.9 | 437 | | 2.1.0 .. 2.1.2 | alpine:3.9 | dockerfile/alpine_3.5 | 438 | | 1.10.13 | alpine:3.9 | dockerfile/alpine_3.9 | 439 | | 1.10.4 .. 1.10.12 | alpine:3.9 | dockerfile/alpine_3.9 | 440 | | 1.10.0 .. 1.10.3 | alpine:3.5 | dockerfile/alpine_3.5 | 441 | 442 | Rolling versions: 443 | 444 | | Docker tag | Dockerfile | 445 | |-----------|------------------------| 446 | | 2, latest | dockerfile/alpine_3.15 | 447 | | 2-centos7 | dockerfile/centos_7 | 448 | | 1 | dockerfile/alpine_3.15 | 449 | | 1 | dockerfile/alpine_3.15 | 450 | | 2.1 .. 2.8 | dockerfile/alpine_3.9 | 451 | | 2.1 .. 2.8 | dockerfile/alpine_3.9 | 452 | 453 | Special builds: 454 | 455 | | Docker tag | Dockerfile | 456 | | ----------------- | ----------------------- | 457 | | 2.10.0-centos7 | dockerfile/centos_7 | 458 | | 2.10.0-ubuntu | dockerfile/ubuntu_20.04 | 459 | | 1.x-centos7 | dockerfile/centos_7 | 460 | | 2.x-centos7 | dockerfile/centos_7 | 461 | 462 | ### Release policy 463 | 464 | All images are pushed to [Docker Hub](docker_hub_tags). 465 | 466 | Fixed version tags (`x.y.z`) are frozen: we never update them. 467 | 468 | Example of versions timeline for Tarantool since 2.10 469 | (see the [release policy](https://www.tarantool.io/en/doc/latest/release/policy/)): 470 | 471 | - `2.10.0-beta1` — Beta 472 | - `2.10.0-rc1` — Release candidate 473 | - `2.10.0` — Release (stable) 474 | 475 | Example of minor versions timeline for Tarantool up to 2.8: 476 | 477 | - `x.y.0` - Alpha 478 | - `x.y.1` - Beta 479 | - `x.y.2` - Stable 480 | - `x.y.3` - Stable 481 | 482 | Rolling versions are updated to the latest release (stable) versions: 483 | 484 | - `x.y` == `x.y.latest-z` (`==` means 'points to the same image') 485 | - `1` == `1.10.latest-z` 486 | - `2` == `2.latest-y.z` 487 | - `latest` == `2` 488 | 489 | Special stable builds (CentOS) are updated with the same policy as rolling versions: 490 | 491 | - `1.x-centos7` image offers a last `1..2` release 492 | - `2.x-centos7` image offers a last `2..2` release 493 | 494 | [docker_hub_tags]: https://hub.docker.com/r/tarantool/tarantool/tags 495 | 496 | ### Exceptional cases 497 | 498 | As an exception we can deliver an important update for the existing tarantool 499 | release within `x.y.z-r1`, `x.y.z-r2`, ... tags. 500 | 501 | When `x.y.z-r` is released, the corresponding rolling releases (`x.y`, `x` 502 | and `latest` if `x` == 2) should be updated to point to the same image. 503 | 504 | There is no strict policy, which updates should be considered important. Let's 505 | decide on demand and define the policy later. 506 | 507 | TBD: How to notify users about the exceptional updates? 508 | 509 | ### How to build and push an image 510 | 511 | Example: 512 | 513 | ```console 514 | $ export TAG=2 515 | $ export OS=alpine DIST=3.9 VER=2.x # double check the values! 516 | $ PORT=5200 make -f .github.mk build 517 | $ docker push tarantool/tarantool:${TAG} 518 | ``` 519 | -------------------------------------------------------------------------------- /dockerfiles/alpine_3.15: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /dockerfiles/alpine_3.5: -------------------------------------------------------------------------------- 1 | FROM alpine:3.5 2 | MAINTAINER mail@racktear.com 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 | ENV TARANTOOL_VERSION=${TNT_VER} \ 13 | TARANTOOL_DOWNLOAD_URL=https://github.com/tarantool/tarantool.git \ 14 | TARANTOOL_INSTALL_LUADIR=/usr/local/share/tarantool \ 15 | CURL_REPO=https://github.com/curl/curl.git \ 16 | CURL_TAG=curl-7_59_0 \ 17 | GPERFTOOLS_REPO=https://github.com/gperftools/gperftools.git \ 18 | GPERFTOOLS_TAG=gperftools-2.5 \ 19 | LUAROCKS_URL=https://github.com/tarantool/luarocks/archive/6e6fe62d9409fe2103c0fd091cccb3da0451faf5.tar.gz \ 20 | LUAROCK_VSHARD_VERSION=0.1.14 \ 21 | LUAROCK_AVRO_SCHEMA_VERSION=3.0.3 \ 22 | LUAROCK_EXPERATIOND_VERSION=1.0.1 \ 23 | LUAROCK_QUEUE_VERSION=1.0.6 \ 24 | LUAROCK_CONNPOOL_VERSION=1.1.1 \ 25 | LUAROCK_HTTP_VERSION=1.1.0 \ 26 | LUAROCK_MEMCACHED_VERSION=1.0.1 \ 27 | LUAROCK_METRICS_VERSION=0.10.0 \ 28 | LUAROCK_TARANTOOL_PG_VERSION=2.0.2 \ 29 | LUAROCK_TARANTOOL_MYSQL_VERSION=2.0.1 \ 30 | LUAROCK_TARANTOOL_MQTT_VERSION=1.2.1 \ 31 | LUAROCK_TARANTOOL_GIS_VERSION=1.0.0 \ 32 | LUAROCK_TARANTOOL_PROMETHEUS_VERSION=1.0.4 \ 33 | LUAROCK_TARANTOOL_GPERFTOOLS_VERSION=1.0.1 34 | 35 | COPY files/gperftools_alpine.diff / 36 | 37 | ARG ENABLE_BUNDLED_LIBYAML 38 | RUN set -x \ 39 | && apk add --no-cache --virtual .run-deps \ 40 | libstdc++ \ 41 | readline \ 42 | libressl \ 43 | yaml \ 44 | lz4 \ 45 | binutils \ 46 | ncurses \ 47 | libgomp \ 48 | lua \ 49 | tar \ 50 | zip \ 51 | zlib \ 52 | libunwind \ 53 | icu \ 54 | ca-certificates \ 55 | && apk add --no-cache --virtual .build-deps \ 56 | gcc \ 57 | g++ \ 58 | cmake \ 59 | readline-dev \ 60 | libressl-dev \ 61 | yaml-dev \ 62 | lz4-dev \ 63 | zlib-dev \ 64 | binutils-dev \ 65 | ncurses-dev \ 66 | lua-dev \ 67 | musl-dev \ 68 | make \ 69 | git \ 70 | libunwind-dev \ 71 | autoconf \ 72 | automake \ 73 | libtool \ 74 | linux-headers \ 75 | go \ 76 | tcl \ 77 | icu-dev \ 78 | wget \ 79 | && : "---------- curl ----------" \ 80 | && mkdir -p /usr/src/curl \ 81 | && git clone "$CURL_REPO" /usr/src/curl \ 82 | && git -C /usr/src/curl checkout "$CURL_TAG" \ 83 | && (cd /usr/src/curl \ 84 | && ./buildconf \ 85 | && ./configure --prefix "/usr/local" \ 86 | && make -j \ 87 | && make install) \ 88 | && : "---------- gperftools ----------" \ 89 | && mkdir -p /usr/src/gperftools \ 90 | && git clone "$GPERFTOOLS_REPO" /usr/src/gperftools \ 91 | && git -C /usr/src/gperftools checkout "$GPERFTOOLS_TAG" \ 92 | && (cd /usr/src/gperftools; \ 93 | patch -p1 < /gperftools_alpine.diff; \ 94 | rm /gperftools_alpine.diff; \ 95 | ./autogen.sh; \ 96 | ./configure; \ 97 | make -j ; \ 98 | cp .libs/libprofiler.so* /usr/local/lib;) \ 99 | && : "---------- pprof for gperftools ----------" \ 100 | && : "To avoid of the issue:" \ 101 | && : "'The master branch is Incompatible with go version < 1.13 #538'" \ 102 | && : "https://github.com/google/pprof/issues/538" \ 103 | && : "use latest workable commits with the old GO versions" \ 104 | && ( export GOPATH=/root/go && \ 105 | export PATH=${GOPATH}/bin:/usr/local/go/bin:$PATH && \ 106 | export GOBIN=$GOROOT/bin && \ 107 | mkdir -p ${GOPATH}/src ${GOPATH}/bin && \ 108 | go get github.com/google/pprof || : && \ 109 | cd /root/go/src/github.com/google/pprof && \ 110 | git checkout 160c4290d1d8cee56daa51d7ba5d223291d392aa && \ 111 | ( cd /root/go/src/github.com/chzyer/readline && \ 112 | git checkout f6d7a1f6fbf35bbf9beb80dc63c56a29dcfb759f ) && \ 113 | ( cd /root/go/src/github.com/ianlancetaylor/demangle && \ 114 | git checkout 039b1ae3a3406573c84daaf91166d70ad2bc0519 ) && \ 115 | go build && \ 116 | cp pprof /usr/local/bin/pprof ) \ 117 | && : "---------- tarantool ----------" \ 118 | && mkdir -p /usr/src/tarantool \ 119 | && git clone "$TARANTOOL_DOWNLOAD_URL" /usr/src/tarantool \ 120 | && git -C /usr/src/tarantool checkout "$TARANTOOL_VERSION" \ 121 | && git -C /usr/src/tarantool submodule update --init --recursive \ 122 | && (cd /usr/src/tarantool; \ 123 | cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo\ 124 | -DENABLE_BUNDLED_LIBYAML:BOOL=${ENABLE_BUNDLED_LIBYAML}\ 125 | -DENABLE_BACKTRACE:BOOL=ON\ 126 | -DENABLE_DIST:BOOL=ON\ 127 | .) \ 128 | && make -C /usr/src/tarantool -j\ 129 | && make -C /usr/src/tarantool install \ 130 | && make -C /usr/src/tarantool clean \ 131 | && : "---------- luarocks ----------" \ 132 | && wget -O luarocks.tar.gz "$LUAROCKS_URL" \ 133 | && mkdir -p /usr/src/luarocks \ 134 | && tar -xzf luarocks.tar.gz -C /usr/src/luarocks --strip-components=1 \ 135 | && (cd /usr/src/luarocks; \ 136 | ./configure; \ 137 | make -j build; \ 138 | make install) \ 139 | && rm -r /usr/src/luarocks \ 140 | && rm -rf /usr/src/tarantool \ 141 | && rm -rf /usr/src/gperftools \ 142 | && rm -rf /usr/src/go \ 143 | && : "---------- remove build deps ----------" \ 144 | && apk del .build-deps 145 | 146 | RUN mkdir -p /usr/local/etc/luarocks \ 147 | && mkdir -p /usr/local/etc/tarantool/rocks 148 | 149 | COPY files/luarocks-config.lua /usr/local/etc/luarocks/config-5.1.lua 150 | COPY files/luarocks-config.lua /usr/local/etc/tarantool/rocks/config-5.1.lua 151 | 152 | ARG ROCKS_INSTALLER 153 | RUN set -x \ 154 | && apk add --no-cache --virtual .run-deps \ 155 | mariadb-client-libs \ 156 | libpq \ 157 | cyrus-sasl \ 158 | mosquitto-libs \ 159 | libev \ 160 | && apk add --no-cache --virtual .build-deps \ 161 | git \ 162 | cmake \ 163 | make \ 164 | coreutils \ 165 | gcc \ 166 | g++ \ 167 | postgresql-dev \ 168 | lua-dev \ 169 | musl-dev \ 170 | cyrus-sasl-dev \ 171 | mosquitto-dev \ 172 | libev-dev \ 173 | libressl-dev \ 174 | unzip \ 175 | && mkdir -p /rocks \ 176 | && : "---------- proj (for gis module) ----------" \ 177 | && wget -O proj.tar.gz http://download.osgeo.org/proj/proj-4.9.3.tar.gz \ 178 | && mkdir -p /usr/src/proj \ 179 | && tar -xzf proj.tar.gz -C /usr/src/proj --strip-components=1 \ 180 | && (cd /usr/src/proj; \ 181 | ./configure; \ 182 | make -j ; \ 183 | make install) \ 184 | && rm -r /usr/src/proj \ 185 | && rm -rf /usr/src/proj \ 186 | && rm -rf /proj.tar.gz \ 187 | && : "---------- geos (for gis module) ----------" \ 188 | && wget -O geos.tar.bz2 http://download.osgeo.org/geos/geos-3.6.0.tar.bz2 \ 189 | && mkdir -p /usr/src/geos \ 190 | && tar -xjf geos.tar.bz2 -C /usr/src/geos --strip-components=1 \ 191 | && (cd /usr/src/geos; \ 192 | ./configure; \ 193 | make -j ; \ 194 | make install) \ 195 | && rm -r /usr/src/geos \ 196 | && rm -rf /usr/src/geos \ 197 | && rm -rf /geos.tar.bz2 \ 198 | && : "---------- luarocks ----------" \ 199 | && cd / \ 200 | && : "ldoc" \ 201 | && ${ROCKS_INSTALLER} install ldoc \ 202 | && : "lua-term" \ 203 | && ${ROCKS_INSTALLER} install lua-term \ 204 | && : "avro" \ 205 | && ${ROCKS_INSTALLER} install avro-schema $LUAROCK_AVRO_SCHEMA_VERSION \ 206 | && : "expirationd" \ 207 | && ${ROCKS_INSTALLER} install expirationd $LUAROCK_EXPERATIOND_VERSION \ 208 | && : "queue" \ 209 | && ${ROCKS_INSTALLER} install queue $LUAROCK_QUEUE_VERSION \ 210 | && : "connpool" \ 211 | && ${ROCKS_INSTALLER} install connpool $LUAROCK_CONNPOOL_VERSION \ 212 | && : "vshard" \ 213 | && ${ROCKS_INSTALLER} install vshard $LUAROCK_VSHARD_VERSION \ 214 | && : "http" \ 215 | && ${ROCKS_INSTALLER} install http $LUAROCK_HTTP_VERSION \ 216 | && : "pg" \ 217 | && ${ROCKS_INSTALLER} install pg $LUAROCK_TARANTOOL_PG_VERSION \ 218 | && : "mysql" \ 219 | && ${ROCKS_INSTALLER} install mysql $LUAROCK_TARANTOOL_MYSQL_VERSION \ 220 | && : "memcached" \ 221 | && ${ROCKS_INSTALLER} install memcached $LUAROCK_MEMCACHED_VERSION \ 222 | && : "metrics" \ 223 | && ${ROCKS_INSTALLER} install metrics $LUAROCK_METRICS_VERSION \ 224 | && : "prometheus" \ 225 | && ${ROCKS_INSTALLER} install prometheus $LUAROCK_TARANTOOL_PROMETHEUS_VERSION \ 226 | && : "mqtt" \ 227 | && ${ROCKS_INSTALLER} install mqtt $LUAROCK_TARANTOOL_MQTT_VERSION \ 228 | && : "gis" \ 229 | && ${ROCKS_INSTALLER} install gis $LUAROCK_TARANTOOL_GIS_VERSION \ 230 | && : "gperftools" \ 231 | && ${ROCKS_INSTALLER} install gperftools $LUAROCK_TARANTOOL_GPERFTOOLS_VERSION \ 232 | && : "---------- remove build deps ----------" \ 233 | && apk del .build-deps 234 | 235 | # gh-170: needed for luarocks 236 | RUN apk update \ 237 | && apk add wget git 238 | 239 | RUN mkdir -p /var/lib/tarantool \ 240 | && chown tarantool:tarantool /var/lib/tarantool \ 241 | && mkdir -p /opt/tarantool \ 242 | && chown tarantool:tarantool /opt/tarantool \ 243 | && mkdir -p /var/run/tarantool \ 244 | && chown tarantool:tarantool /var/run/tarantool \ 245 | && mkdir /etc/tarantool \ 246 | && chown tarantool:tarantool /etc/tarantool 247 | 248 | VOLUME /var/lib/tarantool 249 | WORKDIR /opt/tarantool 250 | 251 | COPY files/tarantool-entrypoint.lua /usr/local/bin/ 252 | COPY files/tarantool_set_config.lua /usr/local/bin/ 253 | COPY files/docker-entrypoint.sh /usr/local/bin/ 254 | COPY files/console /usr/local/bin/ 255 | COPY files/tarantool_is_up /usr/local/bin/ 256 | COPY files/tarantool.default /usr/local/etc/default/tarantool 257 | 258 | RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat 259 | ENTRYPOINT ["docker-entrypoint.sh"] 260 | 261 | HEALTHCHECK CMD tarantool_is_up 262 | 263 | EXPOSE 3301 264 | CMD [ "tarantool" ] 265 | -------------------------------------------------------------------------------- /dockerfiles/alpine_3.9: -------------------------------------------------------------------------------- 1 | FROM alpine:3.9 2 | MAINTAINER mail@racktear.com 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.5 \ 18 | LUAROCKS_URL=https://github.com/tarantool/luarocks/archive/6e6fe62d9409fe2103c0fd091cccb3da0451faf5.tar.gz \ 19 | LUAROCK_VSHARD_VERSION=0.1.18 \ 20 | LUAROCK_AVRO_SCHEMA_VERSION=3.0.6 \ 21 | LUAROCK_EXPERATIOND_VERSION=1.1.1 \ 22 | LUAROCK_QUEUE_VERSION=1.1.0 \ 23 | LUAROCK_CONNPOOL_VERSION=1.1.1 \ 24 | LUAROCK_HTTP_VERSION=1.2.0 \ 25 | LUAROCK_MEMCACHED_VERSION=1.0.1 \ 26 | LUAROCK_METRICS_VERSION=0.12.0 \ 27 | LUAROCK_TARANTOOL_PG_VERSION=2.0.2 \ 28 | LUAROCK_TARANTOOL_MYSQL_VERSION=2.0.1 \ 29 | LUAROCK_TARANTOOL_MQTT_VERSION=1.5.1 \ 30 | LUAROCK_TARANTOOL_GIS_VERSION=1.0.0 \ 31 | LUAROCK_TARANTOOL_PROMETHEUS_VERSION=1.0.4 \ 32 | LUAROCK_TARANTOOL_GPERFTOOLS_VERSION=1.0.1 33 | 34 | COPY files/gperftools_alpine.diff / 35 | 36 | ARG ENABLE_BUNDLED_LIBYAML \ 37 | LUAJIT_DISABLE_SYSPROF \ 38 | GC64 39 | 40 | RUN set -x \ 41 | && apk add --no-cache --virtual .run-deps.1 \ 42 | libstdc++ \ 43 | readline \ 44 | openssl \ 45 | yaml \ 46 | lz4 \ 47 | binutils \ 48 | ncurses \ 49 | libgomp \ 50 | lua \ 51 | tar \ 52 | zip \ 53 | zlib \ 54 | libunwind \ 55 | icu \ 56 | ca-certificates \ 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 | patch -p1 < /gperftools_alpine.diff; \ 88 | rm /gperftools_alpine.diff; \ 89 | ./autogen.sh; \ 90 | ./configure; \ 91 | make -j ${NPROC}; \ 92 | cp .libs/libprofiler.so* /usr/local/lib;) \ 93 | && : "---------- pprof for gperftools ----------" \ 94 | && : "To avoid of the issue:" \ 95 | && : "'The master branch is Incompatible with go version < 1.13 #538'" \ 96 | && : "https://github.com/google/pprof/issues/538" \ 97 | && : "use latest workable commits with the old GO versions" \ 98 | && ( export GOPATH=/root/go && \ 99 | export PATH=${GOPATH}/bin:/usr/local/go/bin:$PATH && \ 100 | export GOBIN=$GOROOT/bin && \ 101 | mkdir -p ${GOPATH}/src ${GOPATH}/bin && \ 102 | go get github.com/google/pprof || : && \ 103 | cd /root/go/src/github.com/google/pprof && \ 104 | git checkout 160c4290d1d8cee56daa51d7ba5d223291d392aa && \ 105 | ( cd /root/go/src/github.com/chzyer/readline && \ 106 | git checkout f6d7a1f6fbf35bbf9beb80dc63c56a29dcfb759f ) && \ 107 | ( cd /root/go/src/github.com/ianlancetaylor/demangle && \ 108 | git checkout 039b1ae3a3406573c84daaf91166d70ad2bc0519 ) && \ 109 | go build && \ 110 | cp pprof /usr/local/bin/pprof ) \ 111 | && : "---------- tarantool ----------" \ 112 | && mkdir -p /usr/src/tarantool \ 113 | && git clone "$TARANTOOL_DOWNLOAD_URL" /usr/src/tarantool \ 114 | && git -C /usr/src/tarantool checkout "$TARANTOOL_VERSION" \ 115 | && git -C /usr/src/tarantool submodule update --init --recursive \ 116 | && (cd /usr/src/tarantool; \ 117 | echo "WARNING: Temporary fix for test/unit/cbus_hang test" ; \ 118 | git cherry-pick d7fa6d34ab4e0956fe8a80966ba628e0e3f81067 2>/dev/null || \ 119 | git cherry-pick --abort ; \ 120 | cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo\ 121 | -DENABLE_BUNDLED_LIBYAML:BOOL=${ENABLE_BUNDLED_LIBYAML}\ 122 | -DENABLE_BACKTRACE:BOOL=ON\ 123 | -DLUAJIT_DISABLE_SYSPROF:BOOL=${LUAJIT_DISABLE_SYSPROF} \ 124 | -DLUAJIT_ENABLE_GC64:BOOL=${GC64} \ 125 | -DENABLE_DIST:BOOL=ON\ 126 | .) \ 127 | && make -C /usr/src/tarantool -j ${NPROC} \ 128 | && make -C /usr/src/tarantool install \ 129 | && make -C /usr/src/tarantool clean \ 130 | && : "---------- luarocks ----------" \ 131 | && wget -O luarocks.tar.gz "$LUAROCKS_URL" \ 132 | && mkdir -p /usr/src/luarocks \ 133 | && tar -xzf luarocks.tar.gz -C /usr/src/luarocks --strip-components=1 \ 134 | && (cd /usr/src/luarocks; \ 135 | ./configure; \ 136 | make -j build; \ 137 | make install) \ 138 | && rm -r /usr/src/luarocks \ 139 | && rm -rf /usr/src/tarantool \ 140 | && rm -rf /usr/src/gperftools \ 141 | && rm -rf /usr/src/go \ 142 | && : "---------- remove build deps ----------" \ 143 | && apk del .build-deps.1 144 | 145 | RUN mkdir -p /usr/local/etc/luarocks \ 146 | && mkdir -p /usr/local/etc/tarantool/rocks 147 | 148 | COPY files/luarocks-config.lua /usr/local/etc/luarocks/config-5.1.lua 149 | COPY files/luarocks-config.lua /usr/local/etc/tarantool/rocks/config-5.1.lua 150 | 151 | ARG ROCKS_INSTALLER 152 | RUN set -x \ 153 | && apk add --no-cache --virtual .run-deps.2 \ 154 | mariadb-connector-c-dev \ 155 | libpq \ 156 | cyrus-sasl \ 157 | libev \ 158 | && apk add --no-cache --virtual .build-deps.2 \ 159 | git \ 160 | cmake \ 161 | make \ 162 | coreutils \ 163 | gcc \ 164 | g++ \ 165 | postgresql-dev \ 166 | lua-dev \ 167 | musl-dev \ 168 | cyrus-sasl-dev \ 169 | libev-dev \ 170 | wget \ 171 | unzip \ 172 | && mkdir -p /rocks \ 173 | && : "---------- proj (for gis module) ----------" \ 174 | && wget -O proj.tar.gz http://download.osgeo.org/proj/proj-4.9.3.tar.gz \ 175 | && mkdir -p /usr/src/proj \ 176 | && tar -xzf proj.tar.gz -C /usr/src/proj --strip-components=1 \ 177 | && (cd /usr/src/proj; \ 178 | ./configure; \ 179 | make -j ${NPROC}; \ 180 | make install) \ 181 | && rm -r /usr/src/proj \ 182 | && rm -rf /usr/src/proj \ 183 | && rm -rf /proj.tar.gz \ 184 | && : "---------- geos (for gis module) ----------" \ 185 | && wget -O geos.tar.bz2 http://download.osgeo.org/geos/geos-3.6.0.tar.bz2 \ 186 | && mkdir -p /usr/src/geos \ 187 | && tar -xjf geos.tar.bz2 -C /usr/src/geos --strip-components=1 \ 188 | && (cd /usr/src/geos; \ 189 | ./configure; \ 190 | make -j ${NPROC}; \ 191 | make install) \ 192 | && rm -r /usr/src/geos \ 193 | && rm -rf /usr/src/geos \ 194 | && rm -rf /geos.tar.bz2 \ 195 | && : "---------- luarocks ----------" \ 196 | && : "ldoc" \ 197 | && ${ROCKS_INSTALLER} install ldoc \ 198 | && : "lua-term" \ 199 | && ${ROCKS_INSTALLER} install lua-term \ 200 | && : "avro" \ 201 | && ${ROCKS_INSTALLER} install avro-schema $LUAROCK_AVRO_SCHEMA_VERSION \ 202 | && : "expirationd" \ 203 | && ${ROCKS_INSTALLER} install expirationd $LUAROCK_EXPERATIOND_VERSION \ 204 | && : "queue" \ 205 | && ${ROCKS_INSTALLER} install queue $LUAROCK_QUEUE_VERSION \ 206 | && : "connpool" \ 207 | && ${ROCKS_INSTALLER} install connpool $LUAROCK_CONNPOOL_VERSION \ 208 | && : "vshard" \ 209 | && ${ROCKS_INSTALLER} install vshard $LUAROCK_VSHARD_VERSION \ 210 | && : "http" \ 211 | && ${ROCKS_INSTALLER} install http $LUAROCK_HTTP_VERSION \ 212 | && : "pg" \ 213 | && ${ROCKS_INSTALLER} install pg $LUAROCK_TARANTOOL_PG_VERSION \ 214 | && : "mysql" \ 215 | && ${ROCKS_INSTALLER} install mysql $LUAROCK_TARANTOOL_MYSQL_VERSION \ 216 | && : "memcached" \ 217 | && ${ROCKS_INSTALLER} install memcached $LUAROCK_MEMCACHED_VERSION \ 218 | && : "metrics" \ 219 | && ${ROCKS_INSTALLER} install metrics $LUAROCK_METRICS_VERSION \ 220 | && : "prometheus" \ 221 | && ${ROCKS_INSTALLER} install prometheus $LUAROCK_TARANTOOL_PROMETHEUS_VERSION \ 222 | && : "mqtt" \ 223 | && ${ROCKS_INSTALLER} install mqtt $LUAROCK_TARANTOOL_MQTT_VERSION \ 224 | && : "gis" \ 225 | && ${ROCKS_INSTALLER} install gis $LUAROCK_TARANTOOL_GIS_VERSION \ 226 | && : "gperftools" \ 227 | && ${ROCKS_INSTALLER} install gperftools $LUAROCK_TARANTOOL_GPERFTOOLS_VERSION \ 228 | && : "---------- remove build deps ----------" \ 229 | && apk del .build-deps.2 230 | 231 | # gh-170: needed for luarocks 232 | RUN apk update \ 233 | && apk add wget git 234 | 235 | RUN mkdir -p /var/lib/tarantool \ 236 | && chown tarantool:tarantool /var/lib/tarantool \ 237 | && mkdir -p /opt/tarantool \ 238 | && chown tarantool:tarantool /opt/tarantool \ 239 | && mkdir -p /var/run/tarantool \ 240 | && chown tarantool:tarantool /var/run/tarantool \ 241 | && mkdir /etc/tarantool \ 242 | && chown tarantool:tarantool /etc/tarantool 243 | 244 | VOLUME /var/lib/tarantool 245 | WORKDIR /opt/tarantool 246 | 247 | COPY files/tarantool-entrypoint.lua /usr/local/bin/ 248 | COPY files/tarantool_set_config.lua /usr/local/bin/ 249 | COPY files/docker-entrypoint.sh /usr/local/bin/ 250 | COPY files/console /usr/local/bin/ 251 | COPY files/tarantool_is_up /usr/local/bin/ 252 | COPY files/tarantool.default /usr/local/etc/default/tarantool 253 | 254 | RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat 255 | ENTRYPOINT ["docker-entrypoint.sh"] 256 | 257 | HEALTHCHECK CMD tarantool_is_up 258 | 259 | EXPOSE 3301 260 | CMD [ "tarantool" ] 261 | -------------------------------------------------------------------------------- /dockerfiles/centos_7: -------------------------------------------------------------------------------- 1 | FROM centos:7 2 | LABEL org.opencontainers.image.authors="artembo@me.com; piligrim@rootnix.net" 3 | 4 | ARG TNT_VER \ 5 | GC64 \ 6 | ROCKS_INSTALLER 7 | 8 | ENV GC64=${GC64:-false} \ 9 | TARANTOOL_VERSION=${TNT_VER} \ 10 | LUAROCK_VSHARD_VERSION=0.1.26 \ 11 | LUAROCK_AVRO_SCHEMA_VERSION=3.1.0 \ 12 | LUAROCK_EXPERATIOND_VERSION=1.6.0 \ 13 | LUAROCK_QUEUE_VERSION=1.3.3 \ 14 | LUAROCK_CONNPOOL_VERSION=1.1.1 \ 15 | LUAROCK_HTTP_VERSION=1.5.0 \ 16 | LUAROCK_MEMCACHED_VERSION=1.1.1 \ 17 | LUAROCK_METRICS_VERSION=1.0.0 \ 18 | LUAROCK_TARANTOOL_PG_VERSION=2.0.2 \ 19 | LUAROCK_TARANTOOL_MYSQL_VERSION=2.1.3 \ 20 | LUAROCK_TARANTOOL_GIS_VERSION=1.0.1 \ 21 | LUAROCK_TARANTOOL_GPERFTOOLS_VERSION=1.0.1 \ 22 | GOSU_VERSION=1.14 23 | 24 | COPY files/luarocks-config_centos.lua /usr/local/etc/luarocks/config-5.1.lua 25 | COPY files/luarocks-config.lua /usr/local/etc/tarantool/rocks/config-5.1.lua 26 | 27 | # Set repos url to archive.kernel.org because centos 7 reached EOL and 28 | # original repos are not available anymore 29 | RUN if [ $(uname -m) == 'x86_64' ]; then \ 30 | sed -i '/mirrorlist/d' /etc/yum.repos.d/* \ 31 | && sed -i 's,#baseurl=http://mirror.centos.org,baseurl=http://archive.kernel.org,g' /etc/yum.repos.d/* \ 32 | && sed -i 's,# baseurl=http://mirror.centos.org,baseurl=http://archive.kernel.org,g' /etc/yum.repos.d/* \ 33 | && sed -i 's,$releasever/,7.9.2009/,g' /etc/yum.repos.d/*; \ 34 | elif [ $(uname -m) == 'aarch64' ]; then \ 35 | sed -i '/mirrorlist/d' /etc/yum.repos.d/* \ 36 | && sed -i 's,#baseurl=http://mirror.centos.org,baseurl=http://archive.kernel.org,g' /etc/yum.repos.d/* \ 37 | && sed -i 's,# baseurl=http://mirror.centos.org,baseurl=http://archive.kernel.org,g' /etc/yum.repos.d/* \ 38 | && sed -i 's,$releasever/,7.9.2009/,g' /etc/yum.repos.d/* \ 39 | && sed -i 's,altarch/,centos/altarch/,g' /etc/yum.repos.d/*; \ 40 | fi 41 | 42 | RUN groupadd tarantool \ 43 | && adduser -g tarantool tarantool \ 44 | && yum install -y epel-release \ 45 | && if [ "$GC64" = "OFF" ]; then export gc64=""; else export gc64="-gc64"; fi \ 46 | && echo -e "[tarantool_2] \n\ 47 | name=EnterpriseLinux-7 - Tarantool\n\ 48 | baseurl=https://download.tarantool.org/tarantool/release/series-2${gc64}/el/7/$(uname -m)/\n\ 49 | gpgkey=https://download.tarantool.org/tarantool/release/series-2${gc64}/gpgkey\n\ 50 | repo_gpgcheck=1\n\ 51 | gpgcheck=0\n\ 52 | enabled=1\n\ 53 | priority=1\n\ 54 | \n\ 55 | [tarantool_2-source]\n\ 56 | name=EnterpriseLinux-7 - Tarantool Sources\n\ 57 | baseurl=https://download.tarantool.org/tarantool/release/series-2${gc64}/el/7/SRPMS\n\ 58 | gpgkey=https://download.tarantool.org/tarantool/release/series-2${gc64}/gpgkey\n\ 59 | repo_gpgcheck=1\n\ 60 | gpgcheck=0\n\ 61 | \n\ 62 | [tarantool-modules]\n\ 63 | name=EnterpriseLinux-7 - Tarantool Modules\n\ 64 | baseurl=https://download.tarantool.org/tarantool/modules/el/7/$(uname -m)/\n\ 65 | gpgkey=https://download.tarantool.org/tarantool/modules/gpgkey\n\ 66 | repo_gpgcheck=1\n\ 67 | gpgcheck=0\n\ 68 | enabled=1\n\ 69 | priority=1\n\ 70 | \n\ 71 | [tarantool_modules-source]\n\ 72 | name=EnterpriseLinux-7 - Tarantool Module Sources\n\ 73 | baseurl=https://download.tarantool.org/tarantool/modules/el/7/SRPMS\n\ 74 | gpgkey=https://download.tarantool.org/tarantool/modules/gpgkey\n\ 75 | repo_gpgcheck=1\n\ 76 | gpgcheck=0\n" > /etc/yum.repos.d/tarantool_2.repo \ 77 | && yum makecache -y --disablerepo='*' --enablerepo='tarantool_2' --enablerepo='epel' \ 78 | && yum -y install tarantool-${TARANTOOL_VERSION} \ 79 | tarantool-devel-${TARANTOOL_VERSION} \ 80 | mariadb-libs \ 81 | postgresql-libs \ 82 | cyrus-sasl \ 83 | libev \ 84 | proj \ 85 | geos \ 86 | unzip \ 87 | openssl-libs \ 88 | luarocks \ 89 | git \ 90 | cmake \ 91 | make \ 92 | gcc-c++ \ 93 | postgresql-devel \ 94 | cyrus-sasl-devel \ 95 | libev-devel \ 96 | wget \ 97 | proj-devel \ 98 | geos-devel \ 99 | openssl-devel \ 100 | gperftools-libs \ 101 | && ln -s /usr/lib64/libprofiler.so.0 /usr/lib64/libprofiler.so \ 102 | && mkdir -p /.rocks \ 103 | && ${ROCKS_INSTALLER} install lua-term \ 104 | && ${ROCKS_INSTALLER} install vshard $LUAROCK_VSHARD_VERSION \ 105 | && ${ROCKS_INSTALLER} install checks $LUAROCK_CHECKS_VERSION \ 106 | && ${ROCKS_INSTALLER} install avro-schema $LUAROCK_AVRO_SCHEMA_VERSION \ 107 | && ${ROCKS_INSTALLER} install expirationd $LUAROCK_EXPERATIOND_VERSION \ 108 | && ${ROCKS_INSTALLER} install queue $LUAROCK_QUEUE_VERSION \ 109 | && ${ROCKS_INSTALLER} install connpool $LUAROCK_CONNPOOL_VERSION \ 110 | && ${ROCKS_INSTALLER} install http $LUAROCK_HTTP_VERSION \ 111 | && ${ROCKS_INSTALLER} install pg $LUAROCK_TARANTOOL_PG_VERSION \ 112 | && ${ROCKS_INSTALLER} install mysql $LUAROCK_TARANTOOL_MYSQL_VERSION \ 113 | && ${ROCKS_INSTALLER} install memcached $LUAROCK_MEMCACHED_VERSION \ 114 | && ${ROCKS_INSTALLER} install metrics $LUAROCK_METRICS_VERSION \ 115 | && ${ROCKS_INSTALLER} install gis $LUAROCK_TARANTOOL_GIS_VERSION \ 116 | && ${ROCKS_INSTALLER} install gperftools $LUAROCK_TARANTOOL_GPERFTOOLS_VERSION \ 117 | && : "---------- remove build deps ----------" \ 118 | && rm -rf /rocks \ 119 | && yum -y remove \ 120 | git \ 121 | cmake \ 122 | postgresql-devel \ 123 | cyrus-sasl-devel \ 124 | libev-devel \ 125 | proj-devel \ 126 | geos-devel \ 127 | openssl-devel \ 128 | kernel-headers \ 129 | cpp \ 130 | perl \ 131 | && rm -rf /var/cache/yum \ 132 | && : "---------- gosu ----------" \ 133 | && gpg --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ 134 | && if [ $(uname -m) = 'x86_64' ]; then GOSU_ARCH='amd64'; fi \ 135 | && if [ $(uname -m) = 'aarch64' ]; then GOSU_ARCH='arm64'; fi \ 136 | && curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCH}" \ 137 | && curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCH}.asc" \ 138 | && gpg --verify /usr/local/bin/gosu.asc \ 139 | && rm /usr/local/bin/gosu.asc \ 140 | && rm -r /root/.gnupg/ \ 141 | && chmod +x /usr/local/bin/gosu \ 142 | && mkdir -p /var/lib/tarantool \ 143 | && chown tarantool:tarantool /var/lib/tarantool \ 144 | && mkdir -p /opt/tarantool \ 145 | && chown tarantool:tarantool /opt/tarantool \ 146 | && mkdir -p /var/run/tarantool \ 147 | && chown tarantool:tarantool /var/run/tarantool \ 148 | && chown tarantool:tarantool /etc/tarantool \ 149 | && ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh 150 | 151 | VOLUME /var/lib/tarantool 152 | WORKDIR /opt/tarantool 153 | 154 | COPY files/tarantool-entrypoint.lua /usr/local/bin/ 155 | COPY files/tarantool_set_config.lua /usr/local/bin/ 156 | COPY files/docker-entrypoint_centos.sh /usr/local/bin/docker-entrypoint.sh 157 | COPY files/console /usr/local/bin/ 158 | COPY files/tarantool_is_up /usr/local/bin/ 159 | COPY files/tarantool.default /usr/local/etc/default/tarantool 160 | 161 | ENTRYPOINT ["docker-entrypoint.sh"] 162 | 163 | HEALTHCHECK CMD tarantool_is_up 164 | 165 | EXPOSE 3301 166 | CMD [ "tarantool" ] 167 | -------------------------------------------------------------------------------- /dockerfiles/ubuntu_20.04: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | LABEL org.opencontainers.image.authors="artembo@me.com; piligrim@rootnix.net" 3 | 4 | ARG TNT_VER \ 5 | GC64 \ 6 | ROCKS_INSTALLER 7 | 8 | ENV GC64=${GC64:-OFF} \ 9 | TARANTOOL_VERSION=${TNT_VER} \ 10 | LUAROCK_VSHARD_VERSION=0.1.26 \ 11 | LUAROCK_AVRO_SCHEMA_VERSION=3.1.0 \ 12 | LUAROCK_EXPERATIOND_VERSION=1.6.0 \ 13 | LUAROCK_QUEUE_VERSION=1.3.3 \ 14 | LUAROCK_CONNPOOL_VERSION=1.1.1 \ 15 | LUAROCK_HTTP_VERSION=1.5.0 \ 16 | LUAROCK_MEMCACHED_VERSION=1.1.1 \ 17 | LUAROCK_METRICS_VERSION=1.0.0 \ 18 | LUAROCK_TARANTOOL_PG_VERSION=2.0.2 \ 19 | LUAROCK_TARANTOOL_MYSQL_VERSION=2.1.3 \ 20 | LUAROCK_TARANTOOL_GIS_VERSION=1.0.1 \ 21 | LUAROCK_TARANTOOL_GPERFTOOLS_VERSION=1.0.1 22 | 23 | RUN set -x \ 24 | && useradd --user-group --create-home --no-log-init --shell /bin/bash tarantool \ 25 | && apt update && apt -y --no-install-recommends --no-install-suggests install \ 26 | libgoogle-perftools4 \ 27 | lsb-release \ 28 | unzip \ 29 | luarocks \ 30 | libgeos-dev \ 31 | libsasl2-dev \ 32 | libssl-dev \ 33 | libpq-dev \ 34 | gis-devel \ 35 | libproj-dev \ 36 | gosu \ 37 | curl \ 38 | wget \ 39 | gnupg2 \ 40 | ca-certificates \ 41 | apt-transport-https \ 42 | && ln -snf /usr/share/zoneinfo/UTC /etc/localtime && echo UTC > /etc/timezone \ 43 | && ln -s /usr/lib/$(arch)-linux-gnu/libprofiler.so.0.4.18 /usr/lib/$(arch)-linux-gnu/libprofiler.so \ 44 | && if [ "$GC64" = "OFF" ]; then export gc64=""; else export gc64="-gc64"; fi \ 45 | && curl -L https://download.tarantool.org/tarantool/release/series-2/gpgkey | apt-key add - \ 46 | && curl -L https://download.tarantool.org/tarantool/modules/gpgkey | apt-key add - \ 47 | && echo "deb https://download.tarantool.org/tarantool/release/series-2${gc64}/ubuntu/ $(lsb_release -s -c) main" >> /etc/apt/sources.list.d/tarantool_2.list \ 48 | && echo "deb-src https://download.tarantool.org/tarantool/release/series-2${gc64}/ubuntu/ $(lsb_release -s -c) main" >> /etc/apt/sources.list.d/tarantool_2.list \ 49 | && echo "deb https://download.tarantool.org/tarantool/modules/ubuntu/ $(lsb_release -s -c) main" >> /etc/apt/sources.list.d/tarantool_2.list \ 50 | && echo "deb-src https://download.tarantool.org/tarantool/modules/ubuntu/ $(lsb_release -s -c) main" >> /etc/apt/sources.list.d/tarantool_2.list \ 51 | && apt update \ 52 | && apt show -a tarantool \ 53 | && apt -y install tarantool=${TNT_VER} \ 54 | && apt -y install tarantool-dev=${TNT_VER} \ 55 | && apt clean \ 56 | && mkdir /.rocks \ 57 | && ${ROCKS_INSTALLER} install lua-term \ 58 | && ${ROCKS_INSTALLER} install avro-schema $LUAROCK_AVRO_SCHEMA_VERSION \ 59 | && ${ROCKS_INSTALLER} install expirationd $LUAROCK_EXPERATIOND_VERSION \ 60 | && ${ROCKS_INSTALLER} install queue $LUAROCK_QUEUE_VERSION \ 61 | && ${ROCKS_INSTALLER} install connpool $LUAROCK_CONNPOOL_VERSION \ 62 | && ${ROCKS_INSTALLER} install vshard $LUAROCK_VSHARD_VERSION \ 63 | && ${ROCKS_INSTALLER} install http $LUAROCK_HTTP_VERSION \ 64 | && ${ROCKS_INSTALLER} install pg $LUAROCK_TARANTOOL_PG_VERSION \ 65 | && ${ROCKS_INSTALLER} install mysql $LUAROCK_TARANTOOL_MYSQL_VERSION \ 66 | && ${ROCKS_INSTALLER} install memcached $LUAROCK_MEMCACHED_VERSION \ 67 | && ${ROCKS_INSTALLER} install metrics $LUAROCK_METRICS_VERSION \ 68 | && ${ROCKS_INSTALLER} install gis $LUAROCK_TARANTOOL_GIS_VERSION \ 69 | && ${ROCKS_INSTALLER} install gperftools $LUAROCK_TARANTOOL_GPERFTOOLS_VERSION \ 70 | && apt purge -y unzip git gcc cmake \ 71 | && apt -y autoremove \ 72 | && rm -rf /var/lib/apt/lists/ 73 | 74 | COPY files/tarantool-entrypoint.lua /usr/local/bin/ 75 | COPY files/tarantool_set_config.lua /usr/local/bin/ 76 | COPY files/docker-entrypoint_centos.sh /usr/local/bin/docker-entrypoint.sh 77 | COPY files/console /usr/local/bin/ 78 | COPY files/tarantool_is_up /usr/local/bin/ 79 | COPY files/tarantool.default /usr/local/etc/default/tarantool 80 | 81 | RUN chown tarantool /etc/tarantool && ln -s /usr/local/bin/docker-entrypoint.sh /entrypoint.sh 82 | 83 | ENTRYPOINT ["docker-entrypoint.sh"] 84 | 85 | HEALTHCHECK CMD tarantool_is_up 86 | 87 | EXPOSE 3301 88 | CMD [ "tarantool" ] 89 | -------------------------------------------------------------------------------- /files/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tarantool 2 | 3 | local CONSOLE_SOCKET_PATH = 'unix/:/var/run/tarantool/tarantool.sock' 4 | 5 | console = require('console') 6 | console.on_start(function(self) 7 | local status, reason 8 | status, reason = pcall(function() require('console').connect(CONSOLE_SOCKET_PATH) end) 9 | if not status then 10 | self:print(reason) 11 | self.running = false 12 | end 13 | end) 14 | console.on_client_disconnect(function(self) self.running = false end) 15 | console.start() 16 | -------------------------------------------------------------------------------- /files/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | # first arg is `-f` or `--some-option` 5 | # or first arg is `something.conf` 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- tarantool "$@" 8 | fi 9 | 10 | # allow the container to be started with `--user` 11 | if [ "$1" = 'tarantool' -a "$(id -u)" = '0' ]; then 12 | chown -R tarantool /var/lib/tarantool 13 | exec su-exec tarantool "$0" "$@" 14 | fi 15 | 16 | # entry point wraps the passed script to do basic setup 17 | if [ "$1" = 'tarantool' ]; then 18 | shift 19 | exec tarantool "/usr/local/bin/tarantool-entrypoint.lua" "$@" 20 | fi 21 | 22 | exec "$@" 23 | -------------------------------------------------------------------------------- /files/docker-entrypoint_centos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | # first arg is `-f` or `--some-option` 5 | # or first arg is `something.conf` 6 | if [ " -${1#?}" = " $1" ]; then 7 | set -- tarantool "$@" 8 | fi 9 | 10 | # allow the container to be started with `--user` 11 | if [ "$1" = 'tarantool' -a "$(id -u)" = '0' ]; then 12 | chown -R tarantool /var/lib/tarantool 13 | exec gosu tarantool "$0" "$@" 14 | fi 15 | 16 | # entry point wraps the passed script to do basic setup 17 | if [ "$1" = 'tarantool' ]; then 18 | shift 19 | exec tarantool "/usr/local/bin/tarantool-entrypoint.lua" "$@" 20 | fi 21 | 22 | exec "$@" 23 | -------------------------------------------------------------------------------- /files/gperftools_alpine.diff: -------------------------------------------------------------------------------- 1 | diff --git a/src/base/linux_syscall_support.h b/src/base/linux_syscall_support.h 2 | index 5d578cd..fceebe2 100644 3 | --- a/src/base/linux_syscall_support.h 4 | +++ b/src/base/linux_syscall_support.h 5 | @@ -2432,9 +2432,9 @@ struct kernel_stat { 6 | #if defined(__s390x__) 7 | LSS_INLINE _syscall1(void*, mmap, void*, a) 8 | #else 9 | - /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */ 10 | + /* Need to make sure off64_t isn't truncated to 32-bits under x32. */ 11 | LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, 12 | - __off64_t o) { 13 | + off64_t o) { 14 | LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l), 15 | LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f), 16 | LSS_SYSCALL_ARG(d), (uint64_t)(o)); 17 | @@ -2475,7 +2475,7 @@ struct kernel_stat { 18 | LSS_INLINE _syscall6(void*, mmap, void*, s, 19 | size_t, l, int, p, 20 | int, f, int, d, 21 | - __off64_t, o) 22 | + off64_t, o) 23 | LSS_INLINE int LSS_NAME(sigaction)(int signum, 24 | const struct kernel_sigaction *act, 25 | struct kernel_sigaction *oldact) { 26 | diff --git a/src/malloc_hook_mmap_linux.h b/src/malloc_hook_mmap_linux.h 27 | index 1c4c766..b2aa8ed 100755 28 | --- a/src/malloc_hook_mmap_linux.h 29 | +++ b/src/malloc_hook_mmap_linux.h 30 | @@ -56,7 +56,7 @@ 31 | 32 | static inline void* do_mmap64(void *start, size_t length, 33 | int prot, int flags, 34 | - int fd, __off64_t offset) __THROW { 35 | + int fd, off64_t offset) __THROW { 36 | return sys_mmap(start, length, prot, flags, fd, offset); 37 | } 38 | 39 | @@ -67,7 +67,7 @@ static inline void* do_mmap64(void *start, size_t length, 40 | 41 | static inline void* do_mmap64(void *start, size_t length, 42 | int prot, int flags, 43 | - int fd, __off64_t offset) __THROW { 44 | + int fd, off64_t offset) __THROW { 45 | void *result; 46 | 47 | // Try mmap2() unless it's not supported 48 | @@ -151,9 +151,11 @@ static inline void* do_mmap64(void *start, size_t length, 49 | # undef mmap 50 | 51 | extern "C" { 52 | + #ifndef mmap64 53 | void* mmap64(void *start, size_t length, int prot, int flags, 54 | - int fd, __off64_t offset ) __THROW 55 | + int fd, off64_t offset ) __THROW 56 | ATTRIBUTE_SECTION(malloc_hook); 57 | + #endif 58 | void* mmap(void *start, size_t length,int prot, int flags, 59 | int fd, off_t offset) __THROW 60 | ATTRIBUTE_SECTION(malloc_hook); 61 | @@ -166,8 +168,9 @@ extern "C" { 62 | ATTRIBUTE_SECTION(malloc_hook); 63 | } 64 | 65 | +#ifndef mmap64 66 | extern "C" void* mmap64(void *start, size_t length, int prot, int flags, 67 | - int fd, __off64_t offset) __THROW { 68 | + int fd, off64_t offset) __THROW { 69 | MallocHook::InvokePreMmapHook(start, length, prot, flags, fd, offset); 70 | void *result; 71 | if (!MallocHook::InvokeMmapReplacement( 72 | @@ -177,6 +180,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags, 73 | MallocHook::InvokeMmapHook(result, start, length, prot, flags, fd, offset); 74 | return result; 75 | } 76 | +#endif 77 | 78 | # if !defined(__USE_FILE_OFFSET64) || !defined(__REDIRECT_NTH) 79 | 80 | @@ -216,7 +220,7 @@ extern "C" void* mremap(void* old_addr, size_t old_size, size_t new_size, 81 | return result; 82 | } 83 | 84 | -#ifndef __UCLIBC__ 85 | +#if defined(__GLIBC__) && ! defined(__UCLIBC__) 86 | // libc's version: 87 | extern "C" void* __sbrk(ptrdiff_t increment); 88 | 89 | diff --git a/src/tests/stacktrace_unittest.cc b/src/tests/stacktrace_unittest.cc 90 | index 3c9f735..2d39ad9 100644 91 | --- a/src/tests/stacktrace_unittest.cc 92 | +++ b/src/tests/stacktrace_unittest.cc 93 | @@ -120,17 +120,6 @@ void ATTRIBUTE_NOINLINE CheckStackTraceLeaf(void) { 94 | CHECK_GE(size, 1); 95 | CHECK_LE(size, STACK_LEN); 96 | 97 | -#ifdef HAVE_EXECINFO_H 98 | - { 99 | - char **strings = backtrace_symbols(stack, size); 100 | - printf("Obtained %d stack frames.\n", size); 101 | - for (int i = 0; i < size; i++) 102 | - printf("%s %p\n", strings[i], stack[i]); 103 | - printf("CheckStackTrace() addr: %p\n", &CheckStackTrace); 104 | - free(strings); 105 | - } 106 | -#endif 107 | - 108 | for (int i = 0; i < BACKTRACE_STEPS; i++) { 109 | printf("Backtrace %d: expected: %p..%p actual: %p ... ", 110 | i, expected_range[i].start, expected_range[i].end, stack[i]); 111 | -------------------------------------------------------------------------------- /files/luarocks-config.lua: -------------------------------------------------------------------------------- 1 | rocks_trees = { 2 | { name = [[user]], root = home..[[/.luarocks]] }, 3 | { name = [[system]], root = [[/usr/local]] } 4 | } 5 | 6 | rocks_servers = { 7 | [[http://rocks.tarantool.org/]], 8 | [[http://luarocks.org/repositories/rocks]] 9 | } 10 | -------------------------------------------------------------------------------- /files/luarocks-config_centos.lua: -------------------------------------------------------------------------------- 1 | rocks_trees = { 2 | { name = [[user]], root = home..[[/.luarocks]] }, 3 | { name = [[system]], root = [[/usr/local]] } 4 | } 5 | 6 | lib_modules_path="/lib64/lua/"..lua_version 7 | 8 | rocks_servers = { 9 | [[http://rocks.tarantool.org/]], 10 | [[http://luarocks.org/repositories/rocks]] 11 | } 12 | -------------------------------------------------------------------------------- /files/mosquitto.repo: -------------------------------------------------------------------------------- 1 | [home_oojah_mqtt] 2 | name=mqtt (CentOS_CentOS-7) 3 | type=rpm-md 4 | baseurl=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/ 5 | gpgcheck=1 6 | gpgkey=http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7//repodata/repomd.xml.key 7 | enabled=1 -------------------------------------------------------------------------------- /files/tarantool-entrypoint.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tarantool 2 | 3 | local fio = require('fio') 4 | local errno = require('errno') 5 | local urilib = require('uri') 6 | local console = require('console') 7 | local term = require('term') 8 | local log = require('log') 9 | local yaml = require('yaml') 10 | 11 | local TARANTOOL_DEFAULT_PORT = 3301 12 | local CONSOLE_SOCKET_PATH = 'unix/:/var/run/tarantool/tarantool.sock' 13 | local CFG_FILE_PATH = '/etc/tarantool/config.yml' 14 | 15 | 16 | local orig_cfg = box.cfg 17 | 18 | local function read_config() 19 | local f = io.open(CFG_FILE_PATH, "rb") 20 | if f == nil then 21 | log.error("Can't open " .. CFG_FILE_PATH ..": ", errno.strerror()) 22 | os.exit(1) 23 | end 24 | local content = f:read("*all") 25 | f:close() 26 | return yaml.decode(content) 27 | end 28 | 29 | local function write_config(cfg) 30 | local f = io.open(CFG_FILE_PATH, "w+") 31 | if f == nil then 32 | print("Can't open " .. CFG_FILE_PATH ..": ", errno.strerror()) 33 | os.exit(1) 34 | end 35 | local content = yaml.encode(cfg) 36 | f:write(content) 37 | f:close() 38 | end 39 | 40 | local function parse_replication_source(replication_source, user_name, user_password) 41 | if replication_source == nil then 42 | return nil 43 | end 44 | 45 | local replication_source_table = {} 46 | for uri in string.gmatch(replication_source, "[^,]+") do 47 | local parsed_uri = urilib.parse(uri) 48 | if parsed_uri == nil then 49 | error("Incorrect replication source URI format: '"..uri.."'") 50 | end 51 | local host = parsed_uri.host 52 | local port = parsed_uri.service or TARANTOOL_DEFAULT_PORT 53 | local user = parsed_uri.login or user_name 54 | local password = parsed_uri.password or user_password 55 | 56 | if user == 'guest' or user == nil then 57 | replication_source = string.format("%s:%s", host, port) 58 | elseif password == nil then 59 | replication_source = string.format("%s:@%s:%s", user, host, port) 60 | else 61 | replication_source = string.format("%s:%s@%s:%s", user, password, 62 | host, port) 63 | end 64 | 65 | table.insert(replication_source_table, replication_source) 66 | end 67 | 68 | return replication_source_table 69 | end 70 | 71 | local function choose_option(main, substitute, cfg) 72 | if cfg[main] then 73 | return main 74 | end 75 | if cfg[substitute] then 76 | return substitute 77 | end 78 | return main 79 | end 80 | 81 | function set_replication_source(replication_source, user_name, user_password) 82 | local replication_source_table = parse_replication_source( 83 | replication_source, user_name, user_password 84 | ) 85 | local choice = choose_option('replication', 'replication_source', box.cfg) 86 | box.cfg{[choice] = replication_source_table} 87 | log.info("Updated box.cfg.%s to %s", choice, replication_source) 88 | end 89 | 90 | local function create_user(user_name, user_password) 91 | if user_name ~= 'guest' and user_password == nil then 92 | user_password = "" 93 | 94 | local warn_str = [[**************************************************** 95 | WARNING: No password has been set for the database. 96 | This will allow anyone with access to the 97 | Tarantool port to access your database. In 98 | Docker's default configuration, this is 99 | effectively any other container on the same 100 | system. 101 | Use "-e TARANTOOL_USER_PASSWORD=password" 102 | to set it in "docker run". 103 | ****************************************************]] 104 | log.warn('\n'..warn_str) 105 | end 106 | 107 | if user_name == 'guest' and user_password == nil then 108 | local warn_str = [[**************************************************** 109 | WARNING: 'guest' is chosen as primary user. 110 | Since it is not allowed to set a password for 111 | guest user, your instance will be accessible 112 | by anyone having direct access to the Tarantool 113 | port. 114 | If you wanted to create an authenticated user, 115 | specify "-e TARANTOOL_USER_NAME=username" and 116 | pick a user name other than "guest". 117 | ****************************************************]] 118 | log.warn('\n'..warn_str) 119 | end 120 | 121 | if user_name == 'guest' and user_password ~= nil then 122 | user_password = nil 123 | 124 | local warn_str = [[**************************************************** 125 | WARNING: A password for guest user has been specified. 126 | In Tarantool, guest user can't have a password 127 | and is always allowed to login, if it has 128 | enough privileges. 129 | If you wanted to create an authenticated user, 130 | specify "-e TARANTOOL_USER_NAME=username" and 131 | pick a user name other than "guest". 132 | ****************************************************]] 133 | log.warn('\n'..warn_str) 134 | end 135 | 136 | if user_name ~= 'admin' and user_name ~= 'guest' then 137 | if not box.schema.user.exists(user_name) then 138 | log.info("Creating user '%s'", user_name) 139 | box.schema.user.create(user_name) 140 | end 141 | end 142 | 143 | if user_name ~= 'admin' then 144 | log.info("Granting admin privileges to user '%s'", user_name) 145 | box.schema.user.grant(user_name, 'read,write,execute,create,drop', 146 | 'universe', nil, {if_not_exists = true}) 147 | box.schema.user.grant(user_name, 'replication', 148 | nil, nil, {if_not_exists = true}) 149 | end 150 | 151 | if user_name ~= 'guest' then 152 | log.info("Setting password for user '%s'", user_name) 153 | box.schema.user.passwd(user_name, user_password) 154 | end 155 | end 156 | 157 | function set_credentials(user_name, user_password) 158 | create_user(user_name, user_password) 159 | end 160 | 161 | local function wrapper_cfg(override) 162 | local work_dir = '/var/lib/tarantool' 163 | local snap_filename = "*.snap" 164 | local snap_path = work_dir..'/'..snap_filename 165 | 166 | local first_run = false 167 | if next(fio.glob(snap_path)) == nil then 168 | first_run = true 169 | end 170 | 171 | 172 | local file_cfg = {} 173 | local config_file_exists = fio.stat(CFG_FILE_PATH) ~= nil 174 | if not config_file_exists then 175 | log.info("Creating configuration file: " .. CFG_FILE_PATH) 176 | 177 | file_cfg.TARANTOOL_USER_NAME = os.getenv('TARANTOOL_USER_NAME') 178 | file_cfg.TARANTOOL_USER_PASSWORD = os.getenv('TARANTOOL_USER_PASSWORD') 179 | file_cfg.TARANTOOL_SLAB_ALLOC_ARENA = os.getenv('TARANTOOL_SLAB_ALLOC_ARENA') 180 | file_cfg.TARANTOOL_SLAB_ALLOC_FACTOR = os.getenv('TARANTOOL_SLAB_ALLOC_FACTOR') 181 | file_cfg.TARANTOOL_SLAB_ALLOC_MINIMAL = os.getenv('TARANTOOL_SLAB_ALLOC_MINIMAL') 182 | file_cfg.TARANTOOL_SLAB_ALLOC_MAXIMAL = os.getenv('TARANTOOL_SLAB_ALLOC_MAXIMAL') 183 | file_cfg.TARANTOOL_PORT = os.getenv('TARANTOOL_PORT') 184 | file_cfg.TARANTOOL_FORCE_RECOVERY = os.getenv('TARANTOOL_FORCE_RECOVERY') 185 | file_cfg.TARANTOOL_LOG_FORMAT = os.getenv('TARANTOOL_LOG_FORMAT') 186 | file_cfg.TARANTOOL_LOG_LEVEL = os.getenv('TARANTOOL_LOG_LEVEL') 187 | file_cfg.TARANTOOL_WAL_MODE = os.getenv('TARANTOOL_WAL_MODE') 188 | file_cfg.TARANTOOL_REPLICATION_SOURCE = os.getenv('TARANTOOL_REPLICATION_SOURCE') 189 | file_cfg.TARANTOOL_REPLICATION = os.getenv('TARANTOOL_REPLICATION') 190 | file_cfg.TARANTOOL_SNAPSHOT_PERIOD = os.getenv('TARANTOOL_SNAPSHOT_PERIOD') 191 | file_cfg.TARANTOOL_MEMTX_MEMORY = os.getenv('TARANTOOL_MEMTX_MEMORY') 192 | file_cfg.TARANTOOL_CHECKPOINT_INTERVAL = os.getenv('TARANTOOL_CHECKPOINT_INTERVAL') 193 | file_cfg.TARANTOOL_MEMTX_MIN_TUPLE_SIZE = os.getenv('TARANTOOL_MEMTX_MIN_TUPLE_SIZE') 194 | file_cfg.TARANTOOL_MEMTX_MAX_TUPLE_SIZE = os.getenv('TARANTOOL_MEMTX_MAX_TUPLE_SIZE') 195 | 196 | write_config(file_cfg) 197 | else 198 | log.info("Loading existing configuration file: " .. CFG_FILE_PATH) 199 | 200 | file_cfg = read_config() 201 | end 202 | 203 | local user_name = file_cfg.TARANTOOL_USER_NAME or 204 | os.getenv('TARANTOOL_USER_NAME') or 'guest' 205 | local user_password = file_cfg.TARANTOOL_USER_PASSWORD or 206 | os.getenv('TARANTOOL_USER_PASSWORD') 207 | 208 | 209 | local cfg = override or {} 210 | -- Placeholders for deprecated options 211 | cfg.slab_alloc_arena = tonumber(file_cfg.TARANTOOL_SLAB_ALLOC_ARENA) or 212 | override.slab_alloc_arena 213 | cfg.slab_alloc_maximal = tonumber(file_cfg.TARANTOOL_SLAB_ALLOC_MAXIMAL) or 214 | override.slab_alloc_maximal 215 | cfg.slab_alloc_minimal = tonumber(file_cfg.TARANTOOL_SLAB_ALLOC_MINIMAL) or 216 | override.slab_alloc_minimal 217 | cfg.snapshot_period = tonumber(file_cfg.TARANTOOL_SNAPSHOT_PERIOD) or 218 | override.snapshot_period 219 | -- Replacements for deprecated options 220 | cfg.memtx_memory = tonumber(file_cfg.TARANTOOL_MEMTX_MEMORY) or 221 | override.memtx_memory 222 | cfg.memtx_min_tuple_size = tonumber(file_cfg.TARANTOOL_MEMTX_MIN_TUPLE_SIZE) or 223 | override.memtx_min_tuple_size 224 | cfg.memtx_max_tuple_size = tonumber(file_cfg.TARANTOOL_MEMTX_MAX_TUPLE_SIZE) or 225 | override.memtx_max_tuple_size 226 | cfg.checkpoint_interval = tonumber(file_cfg.TARANTOOL_CHECKPOINT_INTERVAL) or 227 | override.checkpoint_interval 228 | -- Deprecated options with default values 229 | local choice = choose_option('memtx_dir', 'snap_dir', override) 230 | cfg[choice] = override[choice] or '/var/lib/tarantool' 231 | 232 | -- Remaining configuration 233 | cfg.slab_alloc_factor = tonumber(file_cfg.TARANTOOL_SLAB_ALLOC_FACTOR) or 234 | override.slab_alloc_factor 235 | cfg.listen = tonumber(file_cfg.TARANTOOL_PORT) or 236 | override.listen or TARANTOOL_DEFAULT_PORT 237 | cfg.wal_mode = file_cfg.TARANTOOL_WAL_MODE or 238 | override.wal_mode 239 | 240 | cfg.force_recovery = file_cfg.TARANTOOL_FORCE_RECOVERY == 'true' 241 | cfg.log_format = file_cfg.TARANTOOL_LOG_FORMAT or 'plain' 242 | cfg.log_level = tonumber(file_cfg.TARANTOOL_LOG_LEVEL) or 5 243 | 244 | cfg.wal_dir = override.wal_dir or '/var/lib/tarantool' 245 | cfg.vinyl_dir = override.vinyl_dir or '/var/lib/tarantool' 246 | cfg.pid_file = override.pid_file or '/var/run/tarantool/tarantool.pid' 247 | 248 | local choice = choose_option('TARANTOOL_REPLICATION', 'TARANTOOL_REPLICATION_SOURCE', file_cfg) 249 | local replication_source_table = parse_replication_source(file_cfg[choice], 250 | user_name, 251 | user_password) 252 | 253 | if replication_source_table then 254 | cfg.replication = replication_source_table 255 | else 256 | local choice = choose_option('replication', 'replication_source', override) 257 | cfg[choice] = override[choice] 258 | end 259 | 260 | log.info("Config:\n" .. yaml.encode(cfg)) 261 | 262 | orig_cfg(cfg) 263 | 264 | box.once('tarantool-entrypoint', function () 265 | if first_run then 266 | log.info("Initializing database") 267 | 268 | create_user(user_name, user_password) 269 | end 270 | end) 271 | 272 | console.listen(CONSOLE_SOCKET_PATH) 273 | 274 | local metrics_port = tonumber(os.getenv('TARANTOOL_PROMETHEUS_DEFAULT_METRICS_PORT')) or 0 275 | if metrics_port > 0 then 276 | require('metrics').enable_default_metrics() 277 | local prometheus = require('metrics.plugins.prometheus') 278 | local httpd = require('http.server').new('0.0.0.0', metrics_port) 279 | httpd:route( { path = '/metrics' }, prometheus.collect_http) 280 | httpd:start() 281 | end 282 | end 283 | 284 | box.cfg = wrapper_cfg 285 | 286 | -- re-run the script passed as parameter with all arguments that follow 287 | execute_script = arg[1] 288 | if execute_script == nil then 289 | box.cfg {} 290 | 291 | if term.isatty(io.stdout) then 292 | console.start() 293 | os.exit(0) 294 | end 295 | else 296 | narg = 0 297 | while true do 298 | arg[narg] = arg[narg + 1] 299 | if arg[narg] == nil then 300 | break 301 | end 302 | narg = narg + 1 303 | end 304 | 305 | dofile(execute_script) 306 | end 307 | -------------------------------------------------------------------------------- /files/tarantool.default: -------------------------------------------------------------------------------- 1 | -- 2 | -- System-wide settings for tarantoolctl and init scripts 3 | -- 4 | -- This file is meant to enable the usage of tarantoolctl inside 5 | -- docker containers. Since there is no init system, most of its 6 | -- functionality will not work, except 'tarantoolctl enter' or 7 | -- 'tarantoolctl status'. 8 | -- 9 | 10 | default_cfg = { 11 | pid_file = "/var/run/tarantool", -- /var/run/tarantool/${INSTANCE}.pid 12 | wal_dir = "/var/lib/tarantool", -- /var/lib/tarantool/${INSTANCE}/ 13 | snap_dir = "/var/lib/tarantool", -- /var/lib/tarantool/${INSTANCE} 14 | vinyl_dir = "/var/lib/tarantool", -- /var/lib/tarantool/${INSTANCE} 15 | logger = "/var/log/tarantool", -- /var/log/tarantool/${INSTANCE}.log 16 | username = "tarantool", 17 | } 18 | 19 | -- instances.available - all available instances 20 | -- instances.enabled - instances to autostart by sysvinit 21 | instance_dir = "/usr/local/etc/tarantool/instances.enabled" 22 | -- vim: set ft=lua : 23 | -------------------------------------------------------------------------------- /files/tarantool_is_up: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | status=$( (tarantool <<-'EOF' 4 | local CONSOLE_SOCKET_PATH = 'unix/:/var/run/tarantool/tarantool.sock' 5 | local console = require('console') 6 | local os = require("os") 7 | local yaml = require("yaml") 8 | 9 | console.on_start(function(self) 10 | local status, reason 11 | status, reason = pcall(function() require('console').connect(CONSOLE_SOCKET_PATH) end) 12 | if not status then 13 | self:print(reason) 14 | os.exit(1) 15 | end 16 | 17 | cmd = 'box.info.status' 18 | local res = self:eval(cmd) 19 | if res ~= nil then 20 | res = yaml.decode(res) 21 | print(res[1]) 22 | end 23 | 24 | os.exit(0) 25 | end) 26 | 27 | console.on_client_disconnect(function(self) self.running = false end) 28 | console.start() 29 | 30 | os.exit(0) 31 | EOF 32 | ) 2>/dev/null) 33 | 34 | 35 | echo "$status" 36 | 37 | if [ "$status" = "running" ]; then 38 | exit 0 39 | else 40 | exit 1 41 | fi 42 | -------------------------------------------------------------------------------- /files/tarantool_set_config.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tarantool 2 | 3 | local CONSOLE_SOCKET_PATH = 'unix/:/var/run/tarantool/tarantool.sock' 4 | local CFG_FILE_PATH = '/etc/tarantool/config.yml' 5 | 6 | local yaml = require('yaml') 7 | local console = require('console') 8 | local errno = require('errno') 9 | 10 | local function read_config() 11 | local f = io.open(CFG_FILE_PATH, "rb") 12 | if f == nil then 13 | print("Can't open " .. CFG_FILE_PATH ..": ", errno.strerror()) 14 | os.exit(1) 15 | end 16 | local content = f:read("*all") 17 | f:close() 18 | return yaml.decode(content) 19 | end 20 | 21 | local function write_config(cfg) 22 | local f = io.open(CFG_FILE_PATH, "w+") 23 | if f == nil then 24 | print("Can't open " .. CFG_FILE_PATH ..": ", errno.strerror()) 25 | os.exit(1) 26 | end 27 | local content = yaml.encode(cfg) 28 | f:write(content) 29 | f:close() 30 | end 31 | 32 | local function nop(console, cfg, value) 33 | end 34 | 35 | local function update_replication_source(console, cfg, value) 36 | local user_name = "nil" 37 | if cfg['TARANTOOL_USER_NAME'] then 38 | user_name = "'" .. cfg['TARANTOOL_USER_NAME'] .. "'" 39 | end 40 | 41 | local user_password = "nil" 42 | if cfg['TARANTOOL_USER_PASSWORD'] then 43 | user_password = "'" .. cfg['TARANTOOL_USER_PASSWORD'] .. "'" 44 | end 45 | 46 | local cmd = "set_replication_source('"..value.."', " .. user_name .. "," .. user_password .. ")" 47 | print("cmd: ", cmd) 48 | 49 | local res = console:eval(cmd) 50 | 51 | if res ~= nil then 52 | print(res) 53 | end 54 | end 55 | 56 | local function update_credentials(console, cfg, value) 57 | local user_name = "nil" 58 | if cfg['TARANTOOL_USER_NAME'] then 59 | user_name = "'" .. cfg['TARANTOOL_USER_NAME'] .. "'" 60 | end 61 | 62 | local user_password = "nil" 63 | if cfg['TARANTOOL_USER_PASSWORD'] then 64 | user_password = "'" .. cfg['TARANTOOL_USER_PASSWORD'] .. "'" 65 | end 66 | 67 | local cmd = "set_credentials(" .. user_name .. "," .. user_password .. ")" 68 | 69 | local res = console:eval(cmd) 70 | 71 | if res ~= nil then 72 | print(res) 73 | end 74 | 75 | local replication_source = cfg['TARANTOOL_REPLICATION_SOURCE'] 76 | 77 | if replication_source ~= nil then 78 | update_replication_source(console, cfg, replication_source) 79 | end 80 | end 81 | 82 | 83 | local vars = { 84 | TARANTOOL_SLAB_ALLOC_ARENA=nop, 85 | TARANTOOL_SLAB_ALLOC_FACTOR=nop, 86 | TARANTOOL_SLAB_ALLOC_MAXIMAL=nop, 87 | TARANTOOL_SLAB_ALLOC_MINIMAL=nop, 88 | TARANTOOL_PORT=nop, 89 | TARANTOOL_FORCE_RECOVERY=nop, 90 | TARANTOOL_LOG_FORMAT=nop, 91 | TARANTOOL_LOG_LEVEL=nop, 92 | TARANTOOL_WAL_MODE=nop, 93 | TARANTOOL_USER_NAME=update_credentials, 94 | TARANTOOL_USER_PASSWORD=update_credentials, 95 | TARANTOOL_REPLICATION_SOURCE=update_replication_source, 96 | TARANTOOL_REPLICATION=update_replication_source, 97 | } 98 | 99 | console.on_start(function(self) 100 | local status, reason 101 | status, reason = pcall(function() require('console').connect(CONSOLE_SOCKET_PATH) end) 102 | if not status then 103 | self:print(reason) 104 | os.exit(1) 105 | end 106 | 107 | if arg[1] == nil or arg[2] == nil then 108 | self:print("Usage: " .. arg[0] .. " ") 109 | os.exit(1) 110 | end 111 | 112 | if vars[arg[1]] == nil then 113 | self:print("Unknown var: " .. arg[1]) 114 | os.exit(1) 115 | end 116 | 117 | local cfg = read_config() 118 | cfg[arg[1]] = arg[2] 119 | 120 | local func = vars[arg[1]] 121 | func(self, cfg, arg[2]) 122 | 123 | write_config(cfg) 124 | 125 | self.running = false 126 | os.exit(0) 127 | end) 128 | 129 | console.on_client_disconnect(function(self) self.running = false end) 130 | console.start() 131 | 132 | os.exit(0) 133 | -------------------------------------------------------------------------------- /files/test-rocks.lua: -------------------------------------------------------------------------------- 1 | -- Test rocks 2 | avroschema = require('avro_schema') 3 | expirationd = require('expirationd') 4 | queue = require('queue') 5 | connpool = require('connpool') 6 | vshard = require('vshard') 7 | http_request = require("http.server") 8 | pg = require('pg') 9 | mysql = require('mysql') 10 | memcached = require('memcached') 11 | metrics = require('metrics') 12 | prometheus = require('prometheus') 13 | mqtt = require('mqtt') 14 | gis = require('gis') 15 | gperftools = require('gperftools') 16 | -------------------------------------------------------------------------------- /versions/1/alpine_3.15_1.10.14: -------------------------------------------------------------------------------- 1 | 1.10.14-0-g95447943d 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.15_1.10.15: -------------------------------------------------------------------------------- 1 | 1.10.15-0-ge14d0b4ea 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.15_1.x: -------------------------------------------------------------------------------- 1 | 1.10.15-0-ge14d0b4ea 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.5_1.10.0: -------------------------------------------------------------------------------- 1 | 1.10.0-0-g42612ec04 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.5_1.10.1: -------------------------------------------------------------------------------- 1 | 1.10.1-0-g8d7617d4c 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.5_1.10.2: -------------------------------------------------------------------------------- 1 | 1.10.2-0-gc0d8063b6 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.5_1.10.3: -------------------------------------------------------------------------------- 1 | 1.10.3-0-g0b7078a93 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.10: -------------------------------------------------------------------------------- 1 | 1.10.10-0-gaea7ae77a 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.11: -------------------------------------------------------------------------------- 1 | 1.10.11-0-gf0b0e7ecf 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.12: -------------------------------------------------------------------------------- 1 | 1.10.12-0-g7f88f54fe 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.13: -------------------------------------------------------------------------------- 1 | 1.10.13-0-g1d2c5aad5 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.4: -------------------------------------------------------------------------------- 1 | 1.10.4-0-g9dbcdba14 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.5: -------------------------------------------------------------------------------- 1 | 1.10.5-0-g83a2ae919 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.6: -------------------------------------------------------------------------------- 1 | 1.10.6-0-g5372cd2fa 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.7: -------------------------------------------------------------------------------- 1 | 1.10.7-0-g554d439a5 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.8: -------------------------------------------------------------------------------- 1 | 1.10.8-0-g2f18757b7 2 | -------------------------------------------------------------------------------- /versions/1/alpine_3.9_1.10.9: -------------------------------------------------------------------------------- 1 | 1.10.9-0-g720ffdd23 2 | -------------------------------------------------------------------------------- /versions/1/centos_7_1.x: -------------------------------------------------------------------------------- 1 | 1.10.15-0-ge14d0b4ea 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.0: -------------------------------------------------------------------------------- 1 | 2.10.0-0-g0a5ce0b9c 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.2: -------------------------------------------------------------------------------- 1 | 2.10.2-0-gb924f0b4a 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.3: -------------------------------------------------------------------------------- 1 | 2.10.3-0-g8aca8a19a 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.4: -------------------------------------------------------------------------------- 1 | 2.10.4-0-g816000e10 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.5: -------------------------------------------------------------------------------- 1 | 2.10.5-0-g87d07d15e 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.6: -------------------------------------------------------------------------------- 1 | 2.10.6-0-g3990f976b 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.7: -------------------------------------------------------------------------------- 1 | 2.10.7-0-g60f7e1858 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.10.8: -------------------------------------------------------------------------------- 1 | 2.10.8-0-g4472d9247 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.0: -------------------------------------------------------------------------------- 1 | 2.11.0-0-g247a9a418 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.0-rc1: -------------------------------------------------------------------------------- 1 | 2.11.0-rc1-0-ga989cd41b 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.0-rc2: -------------------------------------------------------------------------------- 1 | 2.11.0-rc2-0-g2ae0c94a2 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.1: -------------------------------------------------------------------------------- 1 | 2.11.1-0-g96877bd35 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.2: -------------------------------------------------------------------------------- 1 | 2.11.2-0-g1bac2d257 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.3: -------------------------------------------------------------------------------- 1 | 2.11.3-0-gf933f7790 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.11.4: -------------------------------------------------------------------------------- 1 | 2.11.4-0-g8cebbf2ca 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.15_2.x: -------------------------------------------------------------------------------- 1 | 2.11.4-0-g8cebbf2ca 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.5_2.1.0: -------------------------------------------------------------------------------- 1 | 2.1.0-0-g2c6929204 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.5_2.1.1: -------------------------------------------------------------------------------- 1 | 2.1.1-0-g8a09adb46 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.5_2.1.2: -------------------------------------------------------------------------------- 1 | 2.1.2-2-gd06f95fc1 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.5_2.2.0: -------------------------------------------------------------------------------- 1 | 2.2.0-0-gb58001013 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.5_2.2.1: -------------------------------------------------------------------------------- 1 | 2.2.1-3-g878e2a42c 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.5_2.3.0: -------------------------------------------------------------------------------- 1 | 2.3.0-0-gce0f2ef8b 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.1: -------------------------------------------------------------------------------- 1 | 2.1.3-9-g85ad8508e 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.1.3: -------------------------------------------------------------------------------- 1 | 2.1.3-1-g62c1bcdaf 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.10.0-beta1: -------------------------------------------------------------------------------- 1 | 2.10.0-beta1-0-g7da4b1438 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.10.0-beta2: -------------------------------------------------------------------------------- 1 | 2.10.0-beta2-0-g9d80b68b9 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.10.0-rc1: -------------------------------------------------------------------------------- 1 | 2.10.0-rc1-0-g7ed15e62b 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.2: -------------------------------------------------------------------------------- 1 | 2.2.3-1-g98ecc909a 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.2.2: -------------------------------------------------------------------------------- 1 | 2.2.2-4-g4f8ac5999 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.2.3: -------------------------------------------------------------------------------- 1 | 2.2.3-0-gb9c4c7c04 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.3: -------------------------------------------------------------------------------- 1 | 2.3.3-2-g7eea3a6cb 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.3.1: -------------------------------------------------------------------------------- 1 | 2.3.1-2-g92750c828 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.3.2: -------------------------------------------------------------------------------- 1 | 2.3.2-0-gcb25c5473 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.3.3: -------------------------------------------------------------------------------- 1 | 2.3.3-0-g5be85a37f 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.4: -------------------------------------------------------------------------------- 1 | 2.4.3-1-g986fab717 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.4.0: -------------------------------------------------------------------------------- 1 | 2.4.0-0-g9887ca8fe 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.4.1: -------------------------------------------------------------------------------- 1 | 2.4.1-0-gc44ed3c08 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.4.2: -------------------------------------------------------------------------------- 1 | 2.4.2-0-gcccd89701 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.4.3: -------------------------------------------------------------------------------- 1 | 2.4.3-0-g5180d98f1 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.5: -------------------------------------------------------------------------------- 1 | 2.5.3-0-gf93e48013 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.5.0: -------------------------------------------------------------------------------- 1 | 2.5.0-0-gfef6505c7 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.5.1: -------------------------------------------------------------------------------- 1 | 2.5.1-0-gc2d8c03ee 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.5.2: -------------------------------------------------------------------------------- 1 | 2.5.2-0-g05730d326 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.5.3: -------------------------------------------------------------------------------- 1 | 2.5.3-0-gf93e48013 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.6: -------------------------------------------------------------------------------- 1 | 2.6.3-0-gcd487a2c5 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.6.0: -------------------------------------------------------------------------------- 1 | 2.6.0-0-g47aa4e01e 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.6.1: -------------------------------------------------------------------------------- 1 | 2.6.1-0-gcfe0d1a55 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.6.2: -------------------------------------------------------------------------------- 1 | 2.6.2-0-g34d504d7d 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.6.3: -------------------------------------------------------------------------------- 1 | 2.6.3-0-gcd487a2c5 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.7: -------------------------------------------------------------------------------- 1 | 2.7.2-0-g4d8c06890 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.7.0: -------------------------------------------------------------------------------- 1 | 2.7.0-1-g1ad696c09 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.7.1: -------------------------------------------------------------------------------- 1 | 2.7.1-0-g3ac498c9f 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.7.2: -------------------------------------------------------------------------------- 1 | 2.7.2-0-g4d8c06890 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.7.3: -------------------------------------------------------------------------------- 1 | 2.7.3-0-gdddf926c3 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.8: -------------------------------------------------------------------------------- 1 | 2.8.4-0-g47e6bd362 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.8.0: -------------------------------------------------------------------------------- 1 | 2.8.0-0-gefc30ccf8 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.8.1: -------------------------------------------------------------------------------- 1 | 2.8.1-0-ge2a1ec0c2 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.8.2: -------------------------------------------------------------------------------- 1 | 2.8.2-0-gfc96d10f5 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.8.3: -------------------------------------------------------------------------------- 1 | 2.8.3-0-g01023dbc2 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.8.4: -------------------------------------------------------------------------------- 1 | 2.8.4-0-g47e6bd362 2 | -------------------------------------------------------------------------------- /versions/2/alpine_3.9_2.9.0: -------------------------------------------------------------------------------- 1 | 2.9.0-0-g15bbdab92 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.0: -------------------------------------------------------------------------------- 1 | 2.10.0-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.2: -------------------------------------------------------------------------------- 1 | 2.10.2-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.3: -------------------------------------------------------------------------------- 1 | 2.10.3-1.el7 -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.4: -------------------------------------------------------------------------------- 1 | 2.10.4-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.5: -------------------------------------------------------------------------------- 1 | 2.10.5-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.6: -------------------------------------------------------------------------------- 1 | 2.10.6-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.7: -------------------------------------------------------------------------------- 1 | 2.10.7-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.10.8: -------------------------------------------------------------------------------- 1 | 2.10.8-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.0: -------------------------------------------------------------------------------- 1 | 2.11.0-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.0-rc1: -------------------------------------------------------------------------------- 1 | 2.11.0~rc1-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.0-rc2: -------------------------------------------------------------------------------- 1 | 2.11.0~rc2-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.1: -------------------------------------------------------------------------------- 1 | 2.11.1-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.2: -------------------------------------------------------------------------------- 1 | 2.11.2-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.3: -------------------------------------------------------------------------------- 1 | 2.11.3-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.11.4: -------------------------------------------------------------------------------- 1 | 2.11.4-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/centos_7_2.x: -------------------------------------------------------------------------------- 1 | 2.11.4-1.el7 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.0: -------------------------------------------------------------------------------- 1 | 2.10.0.g0a5ce0b9c-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.2: -------------------------------------------------------------------------------- 1 | 2.10.2.gb924f0b4a-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.3: -------------------------------------------------------------------------------- 1 | 2.10.3.g8aca8a19a-1 -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.4: -------------------------------------------------------------------------------- 1 | 2.10.4.g816000e10-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.5: -------------------------------------------------------------------------------- 1 | 2.10.5.g87d07d15e-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.6: -------------------------------------------------------------------------------- 1 | 2.10.6.g3990f976b-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.7: -------------------------------------------------------------------------------- 1 | 2.10.7.g60f7e1858-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.10.8: -------------------------------------------------------------------------------- 1 | 2.10.8.g4472d9247-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.0: -------------------------------------------------------------------------------- 1 | 2.11.0.g247a9a418-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.0-rc1: -------------------------------------------------------------------------------- 1 | 2.11.0~rc1-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.0-rc2: -------------------------------------------------------------------------------- 1 | 2.11.0~rc2-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.1: -------------------------------------------------------------------------------- 1 | 2.11.1.g96877bd353-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.2: -------------------------------------------------------------------------------- 1 | 2.11.2.g1bac2d257b-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.3: -------------------------------------------------------------------------------- 1 | 2.11.3.gf933f77904-1 2 | -------------------------------------------------------------------------------- /versions/2/ubuntu_20.04_2.11.4: -------------------------------------------------------------------------------- 1 | 2.11.4.g8cebbf2cad-1 2 | --------------------------------------------------------------------------------