Run update.sh
This commit is contained in:
parent
bab8d0ae09
commit
b64cc72bb7
|
|
@ -24,11 +24,11 @@ WARNING:
|
||||||
|
|
||||||
# Supported tags and respective `Dockerfile` links
|
# Supported tags and respective `Dockerfile` links
|
||||||
|
|
||||||
- [`4.0-rc2`, `4.0`](https://github.com/docker-library/cassandra/blob/08bea513f803c366493d823aa81a81d73e21c93f/4.0/Dockerfile)
|
- [`4.0.0`, `4.0`, `4`, `latest`](https://github.com/docker-library/cassandra/blob/74d6b84828dbd2668a51a66b492e9aded9e07c40/4.0/Dockerfile)
|
||||||
- [`3.11.10`, `3.11`, `3`, `latest`](https://github.com/docker-library/cassandra/blob/6d3117157c726a7d3a8667f56e6fb046cfe18106/3.11/Dockerfile)
|
- [`3.11.10`, `3.11`, `3`](https://github.com/docker-library/cassandra/blob/701846b06c0e6eb2c15c6ee8f3c2ed33df52a9aa/3.11/Dockerfile)
|
||||||
- [`3.0.24`, `3.0`](https://github.com/docker-library/cassandra/blob/6d3117157c726a7d3a8667f56e6fb046cfe18106/3.0/Dockerfile)
|
- [`3.0.24`, `3.0`](https://github.com/docker-library/cassandra/blob/701846b06c0e6eb2c15c6ee8f3c2ed33df52a9aa/3.0/Dockerfile)
|
||||||
- [`2.2.19`, `2.2`, `2`](https://github.com/docker-library/cassandra/blob/6d3117157c726a7d3a8667f56e6fb046cfe18106/2.2/Dockerfile)
|
- [`2.2.19`, `2.2`, `2`](https://github.com/docker-library/cassandra/blob/701846b06c0e6eb2c15c6ee8f3c2ed33df52a9aa/2.2/Dockerfile)
|
||||||
- [`2.1.22`, `2.1`](https://github.com/docker-library/cassandra/blob/6d3117157c726a7d3a8667f56e6fb046cfe18106/2.1/Dockerfile)
|
- [`2.1.22`, `2.1`](https://github.com/docker-library/cassandra/blob/701846b06c0e6eb2c15c6ee8f3c2ed33df52a9aa/2.1/Dockerfile)
|
||||||
|
|
||||||
# Quick reference (cont.)
|
# Quick reference (cont.)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,50 +83,46 @@ This will start a RabbitMQ container listening on the default port of 5672. If y
|
||||||
|
|
||||||
Note the `database dir` there, especially that it has my "Node Name" appended to the end for the file storage. This image makes all of `/var/lib/rabbitmq` a volume by default.
|
Note the `database dir` there, especially that it has my "Node Name" appended to the end for the file storage. This image makes all of `/var/lib/rabbitmq` a volume by default.
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
For a list of environment variables supported by RabbitMQ itself, see the [Environment Variables section of rabbitmq.com/configure](https://www.rabbitmq.com/configure.html#supported-environment-variables)
|
||||||
|
|
||||||
|
**WARNING:** As of RabbitMQ 3.9, all of the docker-specific variables listed below are deprecated and no longer used. Please use a configuration file instead; visit [rabbitmq.com/configure](https://www.rabbitmq.com/configure.html) to learn more about the configuration file. For a starting point, the 3.8 images will print out the config file it generated from supplied environment variables.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Unavailable in 3.9 and up
|
||||||
|
RABBITMQ_DEFAULT_PASS
|
||||||
|
RABBITMQ_DEFAULT_PASS_FILE
|
||||||
|
RABBITMQ_DEFAULT_USER
|
||||||
|
RABBITMQ_DEFAULT_USER_FILE
|
||||||
|
RABBITMQ_DEFAULT_VHOST
|
||||||
|
RABBITMQ_ERLANG_COOKIE
|
||||||
|
RABBITMQ_MANAGEMENT_SSL_CACERTFILE
|
||||||
|
RABBITMQ_MANAGEMENT_SSL_CERTFILE
|
||||||
|
RABBITMQ_MANAGEMENT_SSL_DEPTH
|
||||||
|
RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT
|
||||||
|
RABBITMQ_MANAGEMENT_SSL_KEYFILE
|
||||||
|
RABBITMQ_MANAGEMENT_SSL_VERIFY
|
||||||
|
RABBITMQ_SSL_CACERTFILE
|
||||||
|
RABBITMQ_SSL_CERTFILE
|
||||||
|
RABBITMQ_SSL_DEPTH
|
||||||
|
RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT
|
||||||
|
RABBITMQ_SSL_KEYFILE
|
||||||
|
RABBITMQ_SSL_VERIFY
|
||||||
|
RABBITMQ_VM_MEMORY_HIGH_WATERMARK
|
||||||
|
```
|
||||||
|
|
||||||
### Memory Limits
|
### Memory Limits
|
||||||
|
|
||||||
RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits.
|
RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits (e.g. [`docker run --memory=..`](https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory)).
|
||||||
|
|
||||||
The upstream configuration setting for this is `vm_memory_high_watermark`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation.
|
The upstream configuration setting for this is `vm_memory_high_watermark` in `rabbitmq.conf`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation. If you set a relative limit via `vm_memory_high_watermark.relative`, then RabbitMQ will calculate its limits based on the host's total memory and not the limit set by the contianer runtime.
|
||||||
|
|
||||||
In this image, this value is set via `RABBITMQ_VM_MEMORY_HIGH_WATERMARK`. The value of this environment variable is interpreted as follows:
|
|
||||||
|
|
||||||
- `0.49` is treated as `49%`, just like upstream (`{ vm_memory_high_watermark, 0.49 }`)
|
|
||||||
- `56%` is treated as `56%` (`0.56`; `{ vm_memory_high_watermark, 0.56 }`)
|
|
||||||
- `1073741824` is treated as an absolute number of bytes (`{ vm_memory_high_watermark, { absolute, 1073741824 } }`)
|
|
||||||
- `1024MiB` is treated as an absolute number of bytes with a unit (`{ vm_memory_high_watermark, { absolute, "1024MiB" } }`)
|
|
||||||
|
|
||||||
The main behavioral difference is in how percentages are handled. If the current container has a memory limit (`--memory`/`-m`), a percentage value will be calculated to an absolute byte value based on the memory limit, rather than being passed to RabbitMQ as-is. For example, a container run with `--memory 2048m` (and the implied upstream-default `RABBITMQ_VM_MEMORY_HIGH_WATERMARK` of `40%`) will set the effective limit to `819MB` (which is `40%` of `2048MB`).
|
|
||||||
|
|
||||||
### Erlang Cookie
|
### Erlang Cookie
|
||||||
|
|
||||||
See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary.
|
See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary. For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), provide a cookie file (default location of `/var/lib/rabbitmq/.erlang.cookie`).
|
||||||
|
|
||||||
For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), use `RABBITMQ_ERLANG_COOKIE`:
|
For example, you can provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)):
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -d --hostname some-rabbit --name some-rabbit --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3
|
|
||||||
```
|
|
||||||
|
|
||||||
This can then be used from a separate instance to connect:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -it --rm --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3 bash
|
|
||||||
root@f2a2d3d27c75:/# rabbitmqctl -n rabbit@some-rabbit list_users
|
|
||||||
Listing users ...
|
|
||||||
guest [administrator]
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively, one can also use `RABBITMQ_NODENAME` to make repeated `rabbitmqctl` invocations simpler:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -it --rm --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' -e RABBITMQ_NODENAME=rabbit@some-rabbit rabbitmq:3 bash
|
|
||||||
root@f2a2d3d27c75:/# rabbitmqctl list_users
|
|
||||||
Listing users ...
|
|
||||||
guest [administrator]
|
|
||||||
```
|
|
||||||
|
|
||||||
If you wish to provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)), it needs to be mounted at `/var/lib/rabbitmq/.erlang.cookie`:
|
|
||||||
|
|
||||||
```console
|
```console
|
||||||
docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... rabbitmq
|
docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... rabbitmq
|
||||||
|
|
@ -150,70 +146,12 @@ $ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3
|
||||||
|
|
||||||
You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser.
|
You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser.
|
||||||
|
|
||||||
### Environment Variables
|
|
||||||
|
|
||||||
A small selection of the possible environment variables are defined in the Dockerfile to be passed through the docker engine (listed below). For a list of environment variables supported by RabbitMQ itself, see: https://www.rabbitmq.com/configure.html
|
|
||||||
|
|
||||||
For SSL configuration without the management plugin:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
RABBITMQ_SSL_CACERTFILE
|
|
||||||
RABBITMQ_SSL_CERTFILE
|
|
||||||
RABBITMQ_SSL_DEPTH
|
|
||||||
RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT
|
|
||||||
RABBITMQ_SSL_KEYFILE
|
|
||||||
RABBITMQ_SSL_VERIFY
|
|
||||||
```
|
|
||||||
|
|
||||||
For SSL configuration using the management plugin:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
RABBITMQ_MANAGEMENT_SSL_CACERTFILE
|
|
||||||
RABBITMQ_MANAGEMENT_SSL_CERTFILE
|
|
||||||
RABBITMQ_MANAGEMENT_SSL_DEPTH
|
|
||||||
RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT
|
|
||||||
RABBITMQ_MANAGEMENT_SSL_KEYFILE
|
|
||||||
RABBITMQ_MANAGEMENT_SSL_VERIFY
|
|
||||||
```
|
|
||||||
|
|
||||||
### Setting default user and password
|
|
||||||
|
|
||||||
If you wish to change the default username and password of `guest` / `guest`, you can do so with the `RABBITMQ_DEFAULT_USER` and `RABBITMQ_DEFAULT_PASS` environmental variables:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management
|
|
||||||
```
|
|
||||||
|
|
||||||
You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser and use `user`/`password` to gain access to the management console
|
|
||||||
|
|
||||||
To source the username and password from files instead of environment variables, add a `_FILE` suffix to the environment variable names (for example, `RABBITMQ_DEFAULT_USER_FILE=/run/secrets/xxx` to use [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)).
|
|
||||||
|
|
||||||
### Setting default vhost
|
|
||||||
|
|
||||||
If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enabling HiPE (deprecated)
|
|
||||||
|
|
||||||
**Note**: HiPE is disabled since version 3.7.15 of rabbimq images (https://github.com/docker-library/rabbitmq/pull/340)
|
|
||||||
|
|
||||||
See the [RabbitMQ "Configuration"](http://www.rabbitmq.com/configure.html#config-items) for more information about various configuration options.
|
|
||||||
|
|
||||||
For enabling the HiPE compiler on startup use `RABBITMQ_HIPE_COMPILE` set to `1`. According to the official documentation:
|
|
||||||
|
|
||||||
> Set to true to precompile parts of RabbitMQ with HiPE, a just-in-time compiler for Erlang. This will increase server throughput at the cost of increased startup time. You might see 20-50% better performance at the cost of a few minutes delay at startup.
|
|
||||||
|
|
||||||
It is therefore important to take that startup delay into consideration when configuring health checks, automated clustering etc.
|
|
||||||
|
|
||||||
### Enabling Plugins
|
### Enabling Plugins
|
||||||
|
|
||||||
Creating a Dockerfile will have them enabled at runtime. To see the full list of plugins present on the image `rabbitmq-plugins list`
|
Creating a Dockerfile will have them enabled at runtime. To see the full list of plugins present on the image `rabbitmq-plugins list`
|
||||||
|
|
||||||
```Dockerfile
|
```Dockerfile
|
||||||
FROM rabbitmq:3.7-management
|
FROM rabbitmq:3.8-management
|
||||||
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp
|
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -227,12 +165,10 @@ Example `enabled_plugins`
|
||||||
|
|
||||||
### Additional Configuration
|
### Additional Configuration
|
||||||
|
|
||||||
If additional configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction.
|
If configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction.
|
||||||
|
|
||||||
Alternatively, it is possible to use the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` environment variable, whose syntax is described [in section 7.8 ("Configuring an Application") of the Erlang OTP Design Principles User's Guide](http://erlang.org/doc/design_principles/applications.html#id81887) (the appropriate value for `-ApplName` is `-rabbit`), this method requires a slightly different reproduction of its equivalent entry in `rabbitmq.conf`. For example, configuring [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007"`. Where the space between the variable `channel_max` and its value `4007` correctly becomes a comma when translated in the environment.
|
Alternatively, it is possible to use the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` environment variable, whose syntax is described [in section 7.8 ("Configuring an Application") of the Erlang OTP Design Principles User's Guide](http://erlang.org/doc/design_principles/applications.html#id81887) (the appropriate value for `-ApplName` is `-rabbit`), this method requires a slightly different reproduction of its equivalent entry in `rabbitmq.conf`. For example, configuring [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007"`. Where the space between the variable `channel_max` and its value `4007` correctly becomes a comma when translated in the environment.
|
||||||
|
|
||||||
Additional configuration keys would be specified as a list. For example, configuring both [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) and [`auth_backends`](https://www.rabbitmq.com/ldap.html#overview) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007 auth_backends [rabbit_auth_backend_ldap,rabbit_auth_backend_internal]"`. Note that some variables such as for `auth_backends` require their value(s) to be enclosed in brackets, and for multiple values explicitly including the comma as a delimiter.
|
|
||||||
|
|
||||||
### Health/Liveness/Readiness Checking
|
### Health/Liveness/Readiness Checking
|
||||||
|
|
||||||
See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) and [the discussion on docker-library/rabbitmq#174 (especially the large comment by Michael Klishin from RabbitMQ upstream)](https://github.com/docker-library/rabbitmq/pull/174#issuecomment-452002696) for a detailed explanation of why this image does not come with a default `HEALTHCHECK` defined, and for suggestions for implementing your own health/liveness/readiness checks.
|
See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) and [the discussion on docker-library/rabbitmq#174 (especially the large comment by Michael Klishin from RabbitMQ upstream)](https://github.com/docker-library/rabbitmq/pull/174#issuecomment-452002696) for a detailed explanation of why this image does not come with a default `HEALTHCHECK` defined, and for suggestions for implementing your own health/liveness/readiness checks.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue