DockerのRabbitMQは、ボリュームのないコンテナを削除するとデータを失う
私のDockerfile:
FROM rabbitmq:3-management
ENV RABBITMQ_HIPE_COMPILE 1
ENV RABBITMQ_ERLANG_COOKIE "123456"
ENV RABBITMQ_DEFAULT_VHOST "123456"
私の実行スクリプト:
IMAGE_NAME="service-rabbitmq"
TAG="${REGISTRY_ADDRESS}/${IMAGE_NAME}:${VERSION}"
echo $TAG
docker rm -f $IMAGE_NAME
docker run \
-itd \
-v "rabbitmq_log:/var/log/rabbitmq" \
-v "rabbitmq_data:/var/lib/rabbitmq" \
--name "service-rabbitmq" \
--dns=8.8.8.8 \
-p 8080:15672 \
$TAG
コンテナを削除した後、すべてのデータが失われました。
永続的なデータを使用してDockerでrabbitmqを構成するにはどうすればよいですか?
Rabbitmqは、mnesiaディレクトリー内のフォルダー名の一部としてホスト名を使用します。
--hostname some-rabbit
をdocker runに追加しますか?
私は同じ問題を抱えていて、答えを見つけました here
これについてはtoo掘り下げませんでしたが、これを行う最も簡単な方法は、hostname
をPedroとして変更することです上記に言及。
RABBITMQ_NODENAME
の使用Dockerを介してRABBITMQ_NODENAME
変数を編集する場合、Dockerホスト名はランダムハッシュとして生成されるため、hostname
も追加する必要があるようです。
RABBITMQ_NODENAME
変数をmy-rabbit
のような静的なものに変更すると、RabbitMQは"nxdomain not found"
エラーのようなものをスローします。my-rabbit@<docker_hostname_hash>
。 Dockerのホスト名がわかっていて、そのようにRABBITMQ_NODENAME
値に自動でプルできる場合は、my-rabbit@<docker_hostname_hash>
でうまくいくと思います。
[〜#〜]更新[〜#〜]
以前言った
Dockerのホスト名がわかっていて、そのように
RABBITMQ_NODENAME
値に自動でプルできる場合は、my-rabbit@<docker_hostname_hash>
でうまくいくと思います。
デフォルトのdocker Host名が明示的に割り当てられていない場合、起動時にランダムに生成されるため、これは正確に説明されているようには機能しません。実際のハードルは、データディレクトリが正しく取得されるように、元の実行として正確に同じ<docker_hostname_hash>
を使用することです。これは、動的/堅牢に実装するのは面倒です。以下で説明するように、明示的なホスト名を使用するのが最も簡単です。
代わりに、hostname
を選択した値に設定することもできます-たとえば、app-messaging
-AND ALSORABBITMQ_NODENAME
変数をrabbit@app-messaging
のようなものに設定します。このようにして、データディレクトリで使用される完全なノード名を制御します。
(推奨)
とはいえ、ホスト名を変更する理由[〜#〜] not [〜#〜]がある場合を除き、ホスト名のみを変更することは、データが確実にマウントされるようにするための最も簡単な方法です毎回同じポイント。
次のDocker Composeファイルを使用して、起動間でセットアップを正常に保持しています。
version: '3'
services:
rabbitmq:
hostname: 'mabbit'
image: "${ARTIFACTORY}/rabbitmq:3-management"
ports:
- "15672:15672"
- "5672:5672"
volumes:
- "./data:/var/lib/rabbitmq/mnesia/"
networks:
- rabbitmq
networks:
rabbitmq:
driver: bridge
これにより、作成ファイルの横にdata
ディレクトリが作成され、RabbitMQ設定が次のように保持されます。
./data/
rabbit@mabbit/
rabbit@mabbit-plugins-expand/
[email protected]
rabbit@mabbit-feature_flags